我试图用python3.X在网上搜索Twitter,但我只收集了我请求的最后20条tweet。 我想收集2006年到现在的一个请求的全部数据。为此,我认为应该再创建两个功能:一个收集最近的tweet,另一个收集当前的tweets? 我如何从这个滚动页面收集数据?我想我必须使用tweet的id,但是不管我做什么请求,我得到的总是最后20条tweets。在
from pprint import pprint
from lxml import html
import requests
import datetime as dt
from BeautifulSoup import BeautifulSoup
def search_twitter(search):
url = "https://twitter.com/search?f=tweets&vertical=default&q="+search+"&src=typd&lang=fr"
request = requests.get(url)
sourceCode = BeautifulSoup(request.content, "lxml")
tweets = sourceCode.find_all('li', 'js-stream-item')
return tweets
def filter_tweets(tweets):
data = []
for tweet in tweets:
if tweet.find('p', 'tweet-text'):
dtwee = [
['id', tweet['data-item-id']],
['username', tweet.find('span', 'username').text],
['time', tweet.find('a', 'tweet-timestamp')['title']],
['tweet', tweet.find('p', 'tweet-text').text.encode('utf-8')]]
data.append(dtwee)
#tweet_time = dt.datetime.strptime(tweet_time, '%H:%M - %d %B %Y')
else:
continue
return data
def firstlastId_tweets(tweets):
firstID = ""
lastID = ""
i = 0
for tweet in tweets:
if(i == 0):
firstID = tweet[0][1]
elif(i == (len(tweets)-1)):
lastID = tweet[0][1]
i+=1
return firstID, lastID
def last_tweets(search, lastID):
url = "https://twitter.com/search?f=tweets&vertical=default&q="+search+"&src=typd&lang=fr&max_position=TWEET-"+lastID
request = requests.get(url)
sourceCode = BeautifulSoup(request.content, "lxml")
tweets = sourceCode.find_all('li', 'js-stream-item')
return tweets
tweets = search_twitter("lol")
tweets = filter_tweets(tweets)
pprint(tweets)
firstID, lastID = firstlastId_tweets(tweets)
print(firstID, lastID)
while True:
lastTweets = last_tweets("lol", lastID)
pprint(lastTweets)
firstID, lastID = firstlastId_tweets(lastTweets)
print(firstID, lastID)
我在这个网页上找到了一个很好的解决方案:
http://ataspinar.com/2015/11/09/collecting-data-from-twitter/
我所做的是创建一个名为max_pos的变量,我在其中存储了以下字符串:
我存储了}(
first_id
(position1 Tweet id
)和{position20 Tweet id
)所以对于这个请求,我用了这样的方法:
request = requests.get(url+max_pos)
以max_pos empty
开头。在我认为这是一个常见的问题,我们可以发布一个有效的解决方案。我仍然没有它显示的结果,我需要的方式,但我可以模拟“向下滚动到最后”的指导从链接。在
相关问题 更多 >
编程相关推荐