簡體   English   中英

使用python刮推文的問題

[英]Issue with scraping tweets using python

我正在嘗試在特定時間范圍內從一個網頁抓取推文。

為此,我使用此鏈接,該鏈接僅在我指定的時間范圍內搜索:

https://twitter.com/search?f=tweets&q=subwaydstats%20since%3A2016-08-22%20until%3A2018-08-22

這是我的代碼:

import pandas as pd
import datetime as dt
import urllib.request
from bs4 import BeautifulSoup

url = 'https://twitter.com/search?f=tweets&q=subwaydstats%20since%3A2016-08-22%20until%3A2018-08-22'
thepage = urllib.request.urlopen(url)
soup = BeautifulSoup(driver.page_source,"html.parser")

i = 1
for tweet in soup.find_all('div', {'class': 'js-tweet-text-container'}):
    print(tweet.find('p', {'class': 'TweetTextSize'}).text.encode('UTF-8'))
    print(i)
    i += 1

當我從Metrostatstat用戶的實際Twitter頁面中抓取時,以上代碼有效。

因此,即使html看起來對我來說一樣,我也不明白為什么它不適用於搜索頁面。

我是一個初學者,所以很抱歉這是一個愚蠢的問題。 謝謝!

有一個Twitter API-Twitter搜索API文檔: https : //developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets ,其中使用了非官方的Python包裝器: https:/ /github.com/bear/python-twitter使得獲取推文非常容易。

但是,如果要抓取HTML,則要困難得多。 我在做類似的事情-刮一個有角度的應用程序,但是,您在屏幕上看到的實際HTML實際上是通過“前端javascript”呈現的。 請求和urllib,僅獲取基本HTML,但不運行javascript。

您可以使用selenium ,它基本上是一種瀏覽器,可以自動執行任務。 由於它的行為就像瀏覽器一樣,因此它實際上運行該前端javascript,這意味着您將能夠抓取該網頁。

這里有一篇很棒的文章,解釋了刮取Twitter的不同方法https://medium.com/@dawran6/twitter-scraper-tutorial-with-python-requests-beautifulsoup-and-selenium-part-2-b38d849b07fe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM