首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网页抓取链接

从网页抓取链接
EN

Stack Overflow用户
提问于 2021-08-01 18:55:08
回答 1查看 47关注 0票数 0

这里是网络抓取的新手。我基本上想从一个网页中提取一个链接到我的jupyter笔记本中,如下图所示:

以下是我尝试过的代码:

代码语言:javascript
复制
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。

现在如果我运行:

代码语言:javascript
复制
box = bigboxes[0]
productlink = "https://www.flipkart.com" + box.div.div.div.a['href']

我收到一个错误。但是,当我运行时:

代码语言:javascript
复制
box = bigboxes[2]
productlink = "https://www.flipkart.com" + box.div.div.div.a['href']

我能够成功地提取链接。有人能给我解释一下为什么第三个元素能够读取链接吗?我有HTML的基础知识(至少我是这么认为的),但我不了解它的层次。bigboxes存储的到底是什么?显然,HTML脚本本身没有显示任何层。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-01 19:06:07

您的类筛选器不是很具体。

第一个和第二个元素指向不包含该链接的html节点。因此,你得到了错误。

要检查的更具体的类可以是:_13oc-S

代码语言:javascript
复制
bigboxes = flipkart_html.findAll("div", {"class": "_13oc-S"})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68613463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档