考虑the call limits of Twitter API,我正在寻找无需帐户/应用程序即可获得搜索结果的可能性。我已经意识到这个网址
https://twitter.com/search?f=tweets&q=<keyWord1>%20<keyWord2>%20<keyWord3>&src=typd&lang=en
其中<keyWord1>%20<keyWord2>%20<keyWord3>
是搜索查询,实际上返回的页面(用于example this)包括以HTML格式加扰的信息:
<div class="js-tweet-text-container">
<p class="TweetTextSize js-tweet-text tweet-text" lang="en" data-aria-label-part="0">tweetText..</p>
</div>
我可以使用以下代码段提取页面:
#%%
import requests
def srch(*keyWords):
string = "%20".join(keyWords)
url = 'https://twitter.com/search?f=tweets&q=' + string + '&src=typd&lang=en'
return requests.get(url)
现在我的问题是:
re
模块或BeautifulSoup
...?request
模块调用该页面并提取HTML有速率限制吗?它们是否有可能阻止某些IP?如果能举个例子说明这一点,我将不胜感激。
答案 0 :(得分:1)
尝试使用Kenneth Reitz软件包Twitter-scraper(https://github.com/kennethreitz/twitter-scraper)。您可以轻松抓取Twitter。
顺便说一句:Kenneth是请求包的作者。他所做的一切都很棒。
答案 1 :(得分:1)
beautifulsoup
很容易,但是使用re
则更快,但可能很难做到。li.js-stream-item
中看到什么信息示例代码
tweets = soup.select('li.js-stream-item')
for tweet in tweets:
name = tweet.select_one('FullNameGroup strong')
text = tweet.select_one('p.TweetTextSize')
timeStamp = tweet.select_one('a.tweet-timestamp').get('title')