2017-03-26 95 views
6

Coğrafi konum temelli hem Instagram hem de Twitter'ı kazımaya çalışıyorum. Bir sorgu araması yürütebilirim, ancak web sayfasını daha fazla alana taşımak ve alanları veri çerçevesine kaydetmek için zorluklarım var.Web Scraping with Selenium Python [Twitter + Instagram]

Web kazıma twitter ve Instagram için API anahtarsız Instagram için birkaç örnek buldum. Ancak #tags anahtar kelimelerine göre bunlar.

Coğrafi konum ve eski tarihler arasında kazımaya çalışıyorum. Şimdiye kadar bu yazıyı python 3.X'te ve anakonda'daki en yeni paket sürümleriyle geldim.

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

Heyecan Arama Sorgusu için ben herhangi bir hata almıyorum ama diğer gönderileri yeniden yüklemek ve geri CSV dataframe yazabiliyor değilim Instagram için sözdizimi hatası

alıyorum.

Ayrıca Twitter ve Instagram'da enlem ve boylamı arama ile arama yapmaya çalışıyorum.

Csv'de coğrafi koordinatların bir listesi var Bu girişi kullanabilirim veya arama için bir sorgu yazabilirim.

Kazıyıcının yeri ile tamamlanması için herhangi bir yol takdir edilecektir.

Yardım için teşekkür ederiz!

+0

Selenium yerine [request] (http://docs.python-requests.org/en/master/) kullanmayı düşündünüz mü? Sorgunuzu twitter'e karşı çalıştırdım ve işe yaradı. Ayrıca, kodunuz sorguyu bir dize olarak almalı, 'query = geocode% 3 ...' satırı size bir hata vermelidir. –

+0

@Fernando Lütfen ans ile bana yardımcı olabilir misiniz .. Bu Web kazıma kesinlikle yeniyim ve son zamanlarda programlamadan çok uzak oldum .. Gerçekten ne ve nasıl devam edeceğime dair kafam karıştı .. –

cevap

4

requests'u kullanarak çalışmayı başardım. Kişisel kod aşağıdaki gibi görünecektir:

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) 

O zaman ne gerek ayrıştırmak için soup nesneyi kullanabilirsiniz. Sorgunuz doğruysa, aynı şey Instagram için çalışmalıdır.

+0

Çok teşekkür ederim cevabı .. Çorbayı dataframe için ayrıştırma, benim de karşılaştığım zorlukların bir tanesidir .. –

+0

Belki de [panda belgeleri] (http://pandas.pydata.org/pandas-docs/ kararlı/10min.html) nasıl çalıştığını daha iyi anlamak için –

+0

Evet bile soruyu göndermeden önce çalışıyordum .. Bu yüzden herhangi bir yere ulaşmadım bir soru yayınladı .. –