用python3&网站抓取网站beautifulsoup 4

时间:2016-04-11 03:06:17

标签: python web beautifulsoup screen-scraping

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

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")做同样的事情?

    是因为如果我尝试这样做,它只会找到" story-heading"的所有实例。在HTML中并返回那些?我试图让python返回该标记中的所有内容。这是我最好的猜测。

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

1 个答案:

答案 0 :(得分:1)

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

您可以找到类似“故事标题”的所有元素,如下所示:

soup.find_all(".story-heading")

如果相反,你正在寻找id只是做

soup.find_all("#id-name")