2017-03-26 100 views
6

Próbuję web scrape zarówno na Instagramie, jak i na Twitterze na podstawie geolokalizacji. Mogę uruchomić wyszukiwanie zapytań, ale mam problemy z ponownym załadowaniem strony internetowej do większej liczby i zapisania pól w ramce danych.Web Scraping z selenem Python [Twitter + Instagram]

Znalazłem kilka przykładów web scrapingu twitter i Instagram bez kluczy API. Ale są one związane ze słowami kluczowymi #tags.

Próbuję skrobać pod względem lokalizacji geograficznej i między starymi datami. Do tej pory doszedłem tak daleko z pisania kodu w python 3.X i wszystkich najnowszych wersjach pakietów w anakondy.

''' 
    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) 

na Twitterze Search Query otrzymuję błąd składni

Na Instagram nie otrzymuję żadnych błędów, ale nie jestem w stanie przeładować więcej stanowisk i odpisać csv dataframe.

Próbuję również wyszukiwać według szerokości i długości geograficznej zarówno na Twitterze, jak i na Instagramie.

Mam listę współrzędnych geograficznych w CSV mogę użyć tego wejścia lub napisać zapytanie do wyszukiwania.

Każdy sposób wykonania skrobania z lokalizacją zostanie doceniony.

Doceń pomoc!

+0

Czy rozważałeś użycie [wniosków] (http://docs.python-requests.org/en/master/) zamiast selenu? Uruchomiłem twoje zapytanie przeciwko twitterowi i zadziałało. Twój kod powinien otrzymać zapytanie w postaci ciągu, a wiersz 'query = geocode% 3 ...' powinien dać ci błąd. –

+0

@Fernando Czy możesz mi pomóc z ans .. Jestem absolutnie nowy w tym skriningu w sieci i byłem zbyt daleko od programowania ostatnio. Naprawdę jestem bardziej zdezorientowany co i jak dalej postępować. –

Odpowiedz

4

Udało mi się sprawić, by działało, używając requests. Twój kod będzie wyglądał tak:

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) 

Następnie można użyć obiektu soup do analizowania tego, co trzeba. To samo powinno działać na Instagramie, jeśli twoje zapytanie jest poprawne.

+0

Dziękuję bardzo za odpowiedź ... Analizowanie zupy na ramkę danych jest tym, z czym borykam się również. –

+0

Może powinieneś spędzić trochę czasu czytając [dokumentację pandy] (http://pandas.pydata.org/pandas-docs/ stable/10min.html), aby lepiej zrozumieć, jak to działa –

+0

Tak, próbowałem jeszcze przed opublikowaniem pytania .. Nigdzie się nie dostałem, więc wysłałem pytanie .. –