【发布时间】:2023-03-26 06:09:01
【问题描述】:
这里是网络抓取的新手。我基本上想从网页中提取一个链接到我的 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 脚本没有显示任何图层。
【问题讨论】:
-
它指向左侧的“过滤器”文本元素,其中没有链接。如果您想获取一些数据,您可能需要提及,以便我可以写出比这更有用的答案。
-
@ggorlen 以下是我的目标网站:flipkart.com/search?q=acer-aspire-7-core-i5 我想知道如何输入产品详细信息以取消评论。我想为 1000 种产品自动化这个过程。
标签: html python-3.x web-scraping