Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从twitter上抓取推文_Python_Selenium_Web Scraping - Fatal编程技术网

Python 从twitter上抓取推文

Python 从twitter上抓取推文,python,selenium,web-scraping,Python,Selenium,Web Scraping,我正在尝试使用tweet id刮取tweet文本,我的代码是: 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 br

我正在尝试使用tweet id刮取tweet文本,我的代码是:

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呼吁延长攻击性武器禁令”。

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


我不认为selenium是抓取站点的最佳方式,你最好使用一些请求或注入了beautifulsoup的urllib,使用实际的浏览器速度慢且可控性差(cookies、html属性等)。

你可以使用WebElement类的
.text
属性

我不认为selenium是抓取网站的最佳方式,你最好使用一些请求或注入了beautifulsoup的urllib,使用实际的浏览器速度慢且可控性差(cookies、html属性等)。


如前所述,结合使用
请求
/
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
请求,输入URL的内容保存为
页面中的
响应
对象。然后,我们继续使用
页面
创建
美化组
对象

为了找到tweet文本,我们使用

这是一个简单的刮擦工作,如果其中任何一个对你来说没有意义,我建议你通过一些教程。你可以从开始,这将教你网络抓取的基础知识,并帮助你开始

希望这有帮助


正如所指出的,使用
请求
/
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
请求,输入URL的内容保存为
页面中的
响应
对象。然后,我们继续使用
页面
创建
美化组
对象

为了找到tweet文本,我们使用

这是一个简单的刮擦工作,如果其中任何一个对你来说没有意义,我建议你通过一些教程。你可以从开始,这将教你网络抓取的基础知识,并帮助你开始


希望这有帮助

感谢@初学者编码员的建议编辑。我不知道你的建议为什么被拒绝了。我已经将它们合并到了答案中。感谢@newear coder建议的编辑。我不知道你的建议为什么被拒绝了。我已将它们合并到答案中。@Jayanth,您已经得到了两个合格答案,您应该选择其中一个作为预期的解决方案。你似乎不太喜欢打分数。如果你收到这样的推特,你既不会帮自己也不会帮推特的忙。看一看。只有在没有其他可能性的情况下才能进行网页抓取,而twitter提供了一种可能性,所以请使用它。@Jayanth,您已经得到了两个符合条件的答案,您应该选择其中一个作为预期的解决方案。你似乎不太喜欢打分数。如果你收到这样的推特,你既不会帮自己也不会帮推特的忙。看一看。只有在没有其他可能性的情况下才能进行网页抓取,twitter也提供了这样的可能性,所以请使用它。