从Twitters匿名搜索页面中提取信息

时间:2018-11-27 22:32:49

标签: python parsing twitter beautifulsoup

考虑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)

现在我的问题是:

  1. 提取这些信息的最佳方法是什么?使用正则表达式re模块或BeautifulSoup ...?
  2. 可以提取哪些信息?推文的文本,用户ID /名称,时间日期,点赞-推文评论的数量在该页面上可见并且应该可以提取?
  3. 在一个请求或特定时间范围内可以提取多少条推文?例如request模块调用该页面并提取HTML有速率限制吗?它们是否有可能阻止某些IP?

如果能举个例子说明这一点,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试使用Kenneth Reitz软件包Twitter-scraper(https://github.com/kennethreitz/twitter-scraper)。您可以轻松抓取Twitter。

顺便说一句:Kenneth是请求包的作者。他所做的一切都很棒。

答案 1 :(得分:1)

  1. 使用beautifulsoup很容易,但是使用re则更快,但可能很难做到。
  2. 您可以在li.js-stream-item中看到什么信息
  3. 它可以不分页地提取20条推文

示例代码

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')