Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.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抓取推文的问题_Python_Html_Twitter_Beautifulsoup - Fatal编程技术网

使用python抓取推文的问题

使用python抓取推文的问题,python,html,twitter,beautifulsoup,Python,Html,Twitter,Beautifulsoup,我试图在一定的时间内从一个网页上抓取推文 为此,我使用此链接,该链接仅在我指定的时间范围内搜索: 这是我的代码: import pandas as pd import datetime as dt import urllib.request from bs4 import BeautifulSoup url = 'https://twitter.com/search?f=tweets&q=subwaydstats%20since%3A2016-08-22%20until%3A2018

我试图在一定的时间内从一个网页上抓取推文

为此,我使用此链接,该链接仅在我指定的时间范围内搜索:

这是我的代码:

import pandas as pd
import datetime as dt
import urllib.request
from bs4 import BeautifulSoup

url = 'https://twitter.com/search?f=tweets&q=subwaydstats%20since%3A2016-08-22%20until%3A2018-08-22'
thepage = urllib.request.urlopen(url)
soup = BeautifulSoup(driver.page_source,"html.parser")

i = 1
for tweet in soup.find_all('div', {'class': 'js-tweet-text-container'}):
    print(tweet.find('p', {'class': 'TweetTextSize'}).text.encode('UTF-8'))
    print(i)
    i += 1
当我从subwaystat用户的实际twitter页面中抓取时,上面的代码起作用

出于这个原因,我不明白为什么它不适用于搜索页面,即使html对我来说似乎是一样的


我是一个完全的初学者,如果这是一个愚蠢的问题,我很抱歉。谢谢大家!

有一个Twitter API-Twitter搜索API文档: 使用一个非官方的Python包装器:可以非常容易地获取推文

然而,如果你想刮去HTML,那就要困难得多。我也在做类似的事情——抓取一个angular应用程序,然而,你在屏幕上看到的实际HTML实际上是通过“前端javascript”呈现的。请求和urllib,仅获取基本HTML,而不运行javascript

您可以使用基本上是一个浏览器,您可以在其上自动执行任务。由于它的行为类似于浏览器,它实际上运行前端javascript,这意味着您将能够刮取网页


这里有一篇很好的文章解释了如何使用twitter

twitter确实提供了一个可以使用的API。标准搜索API的文档:还有一个非官方的Python包装器,可以让对API的请求变得更容易:嗨,我已经考虑过使用API,但它只允许您获取过去七天的推文。我想我可以让它不断地生成并存储在某个地方,但我正在尝试寻找替代方法。删除Twitter网站是违反Twitter服务的,如果检测到这一点,您的IP地址可能会被阻止。请访问twitter.com/tosThank!我会检查硒。