使用 Selenium Python [Twitter + Instagram] 进行网页抓取

Web Scraping with Selenium Python [Twitter + Instagram]

我正在尝试根据地理位置对 Instagram 和 Twitter 进行网络抓取。 我可以 运行 查询搜索,但我在将网页重新加载到更多并将字段存储到数据框方面遇到了挑战。

我确实找到了几个没有 API 键的网页抓取 Twitter 和 Instagram 的例子。但它们与#tags 关键字有关。

我正在尝试抓取关于地理位置和旧日期之间的信息。到目前为止,我已经在 python 3.X 和 anaconda 中编写所有最新版本的包中的代码。

'''
    Instagram - Components
    "id": "1478232643287060472", 
     "dimensions": {"height": 1080, "width": 1080}, 
     "owner": {"id": "351633262"}, 
     "thumbnail_src": "https://instagram.fdel1-1.fna.fbcdn.net/t51.2885-15/s640x640/sh0.08/e35/17439262_973184322815940_668652714938335232_n.jpg", 
     "is_video": false, 
     "code": "BSDvMHOgw_4", 
     "date": 1490439084, 
     "taken-at=213385402"
     "display_src": "https://instagram.fdel1-1.fna.fbcdn.net/t51.2885-15/e35/17439262_973184322815940_668652714938335232_n.jpg", 
     "caption": "Hakuna jambo zuri kama kumpa Mungu shukrani kwa kila jambo.. \ud83d\ude4f\ud83c\udffe\nIts weekend\n#lifeistooshorttobeunhappy\n#Godisgood \n#happysoul \ud83d\ude00", 
     "comments": {"count": 42}, 
     "likes": {"count": 3813}}, 
'''


import selenium
from selenium import webdriver
#from selenium import selenium
from bs4 import BeautifulSoup
import pandas

#geotags = pd.read_csv("geocodes.csv")
#parmalink = 
query = geocode%3A35.68501%2C139.7514%2C30km%20since:2016-03-01%20until:2016-03-02&f=tweets

twitterURL = 'https://twitter.com/search?q=' + query
#instaURL = "https://www.instagram.com/explore/locations/213385402/"


browser = webdriver.Firefox()
browser.get(twitterURL)
content = browser.page_source

soup = BeautifulSoup(content)
print (soup)

对于 Twitter 搜索查询,我收到语法错误

对于 Instagram,我没有收到任何错误,但我无法重新加载更多帖子并写回 csv 数据框。

我也在尝试在 Twitter 和 Instagram 中使用经纬度搜索进行搜索。

我有一个 csv 格式的地理坐标列表,我可以使用该输入或编写查询以进行搜索。

任何完成位置抓取的方法都将不胜感激。

感谢帮助!!

我设法使用 requests 使其工作。您的代码看起来像这样:

from bs4 import BeautifulSoup
import requests

query = "geocode%3A35.68501%2C139.7514%2C30km%20since:2016-03-01%20until:2016-03-02&f=tweets"

twitter = 'https://twitter.com/search?q=' + query

content = requests.get(twitter)
soup = BeautifulSoup(content.text)

print(soup)

然后就可以使用soup对象来解析你需要的东西了。如果您的查询正确,同样的事情也适用于 Instagram。