【问题标题】:How to scrape using html class name?如何使用 html 类名进行抓取?
【发布时间】:2020-09-11 03:06:34
【问题描述】:

我正在尝试了解抓取的逻辑以及如何找到搜索到的数据。 我正在尝试抓取以下网站:

当我使用下面的代码时:

import requests
from bs4 import BeautifulSoup

page = requests.get('https://fr.finance.yahoo.com/')
soup = BeautifulSoup(page.text,'html.parser')

y = soup.find(id="market-summary")
print(y)

结果就是我想要的。

但是,当我尝试使用代码复制结果时:

import requests
from bs4 import BeautifulSoup

page = requests.get('https://fr.finance.yahoo.com/')
soup = BeautifulSoup(page.text,'html.parser')

x = soup.find("div", class_= 'Whs(nw) D(ib) Bgc($lv2BgColor) W(100%) Bxz(bb)')
print(x)

结果我得到“无”。 有人可以解释我做错了什么吗?如何使用“类”作为标签来查找我要查找的数据?

【问题讨论】:

  • 这个post 报告了不同站点的相同问题,并表明问题是站点 HTML 不是“格式正确”。这是通过HTML validator 运行其源页面来验证此站点的(即复制源,因为通过 URL 选项不起作用)。但是,答案中的任何补救措施都不适用于该网站。
  • 该网站有一个 GDPR cookie 请求。那些有时会干扰刮擦。见stackoverflow.com/questions/57462036/…
  • 另外,当尝试对这些类使用 CSS 选择器时,我得到 SyntaxError: Document.querySelector: '.Whs(nw).D(ib).Bgc($lv2BgColor).W(100%).Bxz(bb)' is not a valid selector utils.js:332:11 所以我怀疑这是故意的,这些类名可能需要转义,至少在 soup.select 而不是 @ 987654330@.

标签: python python-3.x web-scraping beautifulsoup


【解决方案1】:

试试:

x = soup.find("div",attrs={"class":"Whs(nw) D(ib) Bgc($lv2BgColor) W(100%) Bxz(bb)"})

【讨论】:

  • 考虑修改答案,详细解释代码的作用以及它如何回答 OP Q?
  • 感谢您的回复。但是,提供的代码也会导致“无”。
  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多