从推特

时间:2018-02-18 10:16:15

标签: python selenium web-scraping

我正在尝试使用推文ID抓取推文,我的代码是:

import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()
base_url='https://twitter.com/FoxNews/status/'
query='964981093127655424'
url=base_url+query
browser.get(url)
title=browser.find_element_by_tag_name('title')
print(title)

输出是:

selenium.webdriver.remote.webelement.WebElement(session =" 7ca1c0e4c33d62a122bc51bbc171c7eb",element =" 0.37665530454795326-1")

如何以人类可读的格式打印文本? (在这种情况下:"在Twitter上,前总统@BillClinton呼吁续签突击武器禁令"。)

2 个答案:

答案 0 :(得分:3)

您可以使用WebElement类的.text属性。

我认为selenium不是刮取网站的最佳方式,你最好使用一些请求或使用beautifulsoup注入的urllib,使用实际的浏览器很慢且不太可控(cookies,html属性等等)< / p>

答案 1 :(得分:1)


正如Ofek指出的那样,使用requests / urllibbs4的组合将是更好的抓取选择。


为了获得您感兴趣的文字,您可以这样做:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://twitter.com/FoxNews/status/964981093127655424")
soup = BeautifulSoup(page.content, "html.parser")

tweet = soup.select_one(".js-tweet-text-container .TweetTextSize--jumbo")
print(tweet.get_text())


您的输出如下:

'On Twitter, former President @BillClinton called for a renewal of the Assault Weapons Ban.pic.twitter.com/hPaFyhGSfd'

现在,让我们分解我们的所作所为。首先,requests向Twitter服务器发出GET请求,输入网址的内容在Response中保存为page对象。然后,我们使用BeautifulSoup继续创建page对象。

要查找推文文字,我们使用CSS selectors

这是一个简单的抓取工作,如果其中任何一个对你没有意义,我建议你阅读一些教程。您可以从this article开始,它将教您网络抓取的基础知识并帮助您入门。

希望这有帮助!