这里是网络抓取的新手。我基本上想从网页中提取一个链接到我的 jupyter notebook 中,如下图所示:
以下是我尝试过的代码:
from flask import flask,render_template,request,jsonify
from flask_cors import CORS,cross_origin
import requests
from bs4 import BeautifulSoup as bs
from urllib.request import urlopen as uReq
flipkart_url = "https://www.flipkart.com/search?q=" + 'acer-aspire-7-core-i5'
uClient = uReq(flipkart_url)
flipkartPage = uClient.read()
flipkart_html = bs(flipkartPage,"html.parser")
#Since I am only interested in the class "_1AtVbE col-12-12"
bigboxes = flipkart_html.findAll("div",{"class": "_1AtVbE col-12-12"})
事情就是这样,我不太明白 bigboxes 正在存储什么。 bigboxes 类型为 bs4.element.ResultSet,长度为 16。
现在如果我跑:
box = bigboxes[0]
productlink = "https://www.flipkart.com" + box.div.div.div.a['href']
我收到一个错误。但是当我跑步时:
box = bigboxes[2]
productlink = "https://www.flipkart.com" + box.div.div.div.a['href']
我能够成功提取链接。有人可以向我解释为什么第三个元素能够读取链接吗?我对 HTML 有基本的了解(至少我是这么认为的),但我不了解它的层次。 bigboxes 究竟存储什么?很明显,HTML 脚本没有显示这样的层。