【问题标题】:Problem while scraping twitter using beautiful soup使用漂亮的汤刮 twitter 时出现问题
【发布时间】:2021-08-30 17:03:18
【问题描述】:

使用漂亮的汤和请求库抓取带有大量 html 标签的大型网站(如 Facebook 或 twitter)时出现问题。

from bs4 import BeautifulSoup 
import requests 

html_text = requests.get('https://twitter.com/elonmusk').text

soup = BeautifulSoup(html_text, 'lxml')
elon_tweet = soup.find_all('span', class_='css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0')
print(elon_tweet)

The tweet and its corresponding span

全幅图像

img link to the span

当代码执行时,这将返回一个空列表。

我是网络抓取的新手,欢迎详细解释。

【问题讨论】:

  • 将 Twitter API 与 twittertweepy 之类的模块一起使用。比尝试抓取动态生成的页面要容易得多...
  • 好的,首先感谢您的提示,但我不明白上面代码中的错误是什么

标签: python beautifulsoup python-requests


【解决方案1】:

问题是 twitter 正在动态加载其内容。这意味着当你发出请求时,页面被加载并首先从这里返回html(在浏览器的地址栏中写:“view-source:https://twitter.com/elonmusk"

稍后,页面加载完成后,执行 JavaScript 并添加页面的全部内容。 使用来自 python 的请求,您只能抓取“view-source:https://twitter.com/elonmusk"”上可用的内容,并且如您所见,您尝试抓取的元素不存在。

要抓取此元素,您需要使用 selenium,它允许您直接从 python 模拟浏览器,因此需要额外等待几秒钟,以便加载整个内容。你可以在这里找到一个很好的指南:https://www.freecodecamp.org/news/how-to-scrape-websites-with-python-2/

此外,如果您不想遇到所有这些麻烦,您可以改用允许 JavaScript 渲染的 API。

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 2017-12-23
    • 1970-01-01
    • 2018-05-22
    • 2020-06-14
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多