我开始在网站刮刀上取得进展,但我遇到了两个障碍。首先是代码:
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返回该标记中的所有内容。这是我最好的猜测。
为什么我会得到所有这些额外的垃圾代码?我的请求是否应该只显示故事标题标签中的所有内容?我收到的文字多于我想说明的内容。
答案 0 :(得分:1)
Beautiful Soup允许您使用CSS选择器。在doc中查找“CSS选择器”
您可以找到类似“故事标题”的所有元素,如下所示:
soup.find_all(".story-heading")
如果相反,你正在寻找id只是做
soup.find_all("#id-name")