【问题标题】:Website scraping with python3 & beautifulsoup 4使用 python3 和 beautifulsoup 4 抓取网站
【发布时间】:2016-08-01 01:17:16
【问题描述】:

我开始在网站抓取工具上取得进展,但遇到了两个障碍。首先是代码:

import requests
from bs4 import BeautifulSoup

r=requests.get("http://www.nytimes.com")
soup=BeautifulSoup(r.text)

headlines=soup.find_all(class_="story-heading")
for headline in headlines:
 print (headline)

问题

  • 为什么你必须使用find_all(class_= blahblahblah) 而不仅仅是find_all(blahblahblah)?我意识到story-heading 是它自己的一个类,但我不能只使用find_all 搜索所有HTML 并获得相同的结果吗? BeautifulSoup 的注释显示 find_all.a 返回 HTML 文档中的所有锚标记,为什么 find_all("story-heading") 不做同样的事情?

    是不是因为如果我尝试这样做,它只会在 HTML 中找到所有“故事标题”的实例并返回这些实例?我试图让 python 返回该标签中的所有内容。这是我最好的猜测。

  • 为什么我会收到所有这些额外的垃圾代码?我的请求是否应该只显示故事标题标签中的所有内容?我收到的文本比我想指定的要多得多。

【问题讨论】:

  • 将您的代码格式化为代码,而不仅仅是帖子中的常规文本,以便我们阅读

标签: python web beautifulsoup screen-scraping


【解决方案1】:

Beautiful Soup 允许您使用 CSS 选择器。在doc 中查找“CSS 选择器”

您可以像这样找到所有具有“故事标题”类的元素:

soup.find_all(".story-heading")

如果你正在寻找 id 就可以了

soup.find_all("#id-name")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2020-05-30
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多