我需要能够从《纽约时报》上抓取某些类别的许多文章的内容。例如,假设我们要查看与“恐怖主义”有关的所有文章。我将转到此链接查看所有文章:https://www.nytimes.com/topic/subject/terrorism
从这里,我可以单击各个链接,该链接将我定向到一个我可以抓取的URL。我正在将Python与BeautifulSoup软件包一起使用,以帮助我检索文章文本。
这是我到目前为止的代码,可以让我从一篇特定的文章中抓取所有文本:
from bs4 import BeautifulSoup
session = requests.Session()
url = "https://www.nytimes.com/2019/10/23/world/middleeast/what-is-going-to-happen-to-us-inside-isis-prison-children-ask-their-fate.html"
req = session.get(url)
soup = BeautifulSoup(req.text,'html.parser')
paragraphs = soup.find_all('p')
for p in paragraphs:
print(p.get_text())
问题是,我需要能够刮掉该类别下的所有这些文章,而且我不确定该怎么做。由于只要获得URL,我就可以抓取一篇文章,因此,我认为下一步是找到一种方法来收集此特定类别下的所有URL,然后对每个URL运行上面的代码。我将如何做到这一点,尤其是考虑到页面的格式?如果查看更多文章的唯一方法是手动选择列表底部的“ SHOW MORE”按钮,该怎么办?这些功能包含在BeautifulSoup中吗?