我正在尝试使用推文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呼吁续签突击武器禁令"。)
答案 0 :(得分:3)
您可以使用WebElement类的.text
属性。
我认为selenium不是刮取网站的最佳方式,你最好使用一些请求或使用beautifulsoup注入的urllib,使用实际的浏览器很慢且不太可控(cookies,html属性等等)< / p>
答案 1 :(得分:1)
正如Ofek指出的那样,使用requests
/ urllib
和bs4
的组合将是更好的抓取选择。
为了获得您感兴趣的文字,您可以这样做:
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开始,它将教您网络抓取的基础知识并帮助您入门。
希望这有帮助!