Python 在没有Twitter API的情况下,基于标签抓取历史推文

Python 在没有Twitter API的情况下,基于标签抓取历史推文,python,twitter,web-scraping,python-requests,hashtag,Python,Twitter,Web Scraping,Python Requests,Hashtag,我有一个webscraper,给定一个标签,它将返回带有该标签的推文。我的问题是,当我向twitter请求获取hashtags时,我只收到大约20条tweet。我使用请求发出请求并获取页面源,其中只包含20条推文 我相信twitter一次只能呈现几条tweet,但我想知道是否有一种方法可以在不使用twitterapi的情况下获得比最初在页面上呈现的内容更多的内容 我当前发出请求的代码如下所示: import requests from bs4 import BeautifulSoup def

我有一个webscraper,给定一个标签,它将返回带有该标签的推文。我的问题是,当我向twitter请求获取hashtags时,我只收到大约20条tweet。我使用请求发出请求并获取页面源,其中只包含20条推文

我相信twitter一次只能呈现几条tweet,但我想知道是否有一种方法可以在不使用twitterapi的情况下获得比最初在页面上呈现的内容更多的内容

我当前发出请求的代码如下所示:

import requests
from bs4 import BeautifulSoup

def find_hashtags(hashtag):
    r = requests.get('https://twitter.com/hashtag/' + hashtag + '?src=hash')
    data = r.text
    soup = BeautifulSoup(data, "html5lib")

find_tweets('cnn')

有人知道解决这个问题的方法吗?

使用BeautifulSoup的问题是,它纯粹是为了消除html。第一条tweet将自动加载到html中,但下一条tweet将使用javascript加载。BeautifulSoup将无法访问这些元素,您将需要一些其他库来处理加载javascript的元素。我建议研究一下selenium,它可以模仿网络用户。

我能找到的最好的方法是使用并从网页中获取数据。通过在搜索查询中修改date to和date from,可以获得更多搜索数据

修改URL的参数以生成不同的搜索结果。例如,将参数
q=%23hashtagName
附加到URL后,您将收到包含hashtag
“hashtagname”
的推文


我最后做的非常好的事情是使用selenium打开浏览器,并将页面向下滚动“I”多次

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import re

def find_hashtags(hashtag):
    driver = webdriver.Chrome()
    driver.get('https://twitter.com/hashtag/' + hashtag + '?src=hash')
    for i in range(100):
        print(i)
        driver.execute_script("window.scrollTo(0, 100000)")
        time.sleep(1.5)

不确定这是否是最有效的方法,但它符合我的要求

请尝试使用
selenium
selenium请求
抱歉,这个问题太幼稚了,但是我如何修改搜索查询?@joyeb搜索查询都是在URL中设置的。转到高级搜索页面,查看不同的搜索选项如何影响URL。