2017-02-16 17 views
1

Привет Я использую BeautifulSoup для соскабливания данных щебета и я хочу, чтобы очистить количество ретвитов для каждого твита и мой ниже мой кодЗачистка количество ретвитов, используя BeautifulSoup

import urllib2 
from bs4 import BeautifulSoup 

url = "https://twitter.com/nokia" 
response = urllib2.urlopen(url) 
soup = BeautifulSoup(response,"html.parser") 
tweets = soup.findAll('li',{"class":'js-stream-item'}) 
for tweet in tweets: 
    if tweet.find('p',{"class":'tweet-text'}): 
     tweet_user = tweet.find('span',{"class":'username'}).text 
     tweet_text = tweet.find('p',{"class":'tweet-text'}).text.encode('utf8') 
     retweets = tweet.find('span',{"class":"ProfileTweet-actionCount"}).text 
     print(tweet_user) 
     print(tweet_text) 
     print(retweets) 
    else: 
     continue 

Я могу получить tweet_user и tweet_text но некоторые, как не в состоянии получить количество ретвитов может кто-нибудь объяснить мне, как получить число ретвитов

+0

Не ответ, но это может быть намного проще достигнуто с помощью API Twitter! – leo

+0

да, я знаю, что, но api имеет ограничение по скорости, и, кроме того, вы можете получить твиты не более чем за 7 дней до – srk

+0

Насколько я знаю, вы можете получить 3 200 последних твитов, независимо от возраста. По крайней мере несколько недель назад, в прошлый раз, я пробовал! – leo

ответ

0

Хотя использование tweepy рекомендуется
код с небольшими изменениями:

import requests 
from bs4 import BeautifulSoup 

url = "https://twitter.com/nokia" 
response = requests.get(url) 
soup = BeautifulSoup(response.text,"lxml") 
tweets = soup.findAll('li',{"class":'js-stream-item'}) 
for tweet in tweets: 
    if tweet.find('p',{"class":'tweet-text'}): 
     tweet_user = tweet.find('span',{"class":'username'}).text.strip() 
     tweet_text = tweet.find('p',{"class":'tweet-text'}).text.encode('utf8').strip() 
     replies = tweet.find('span',{"class":"ProfileTweet-actionCount"}).text.strip() 
     retweets = tweet.find('span', {"class" : "ProfileTweet-action--retweet"}).text.strip() 
     print(tweet_user) 
     print(tweet_text) 
     print(replies) 
     print(retweets) 
    else: 
     continue 
+0

thanks @josifoski – srk