2017-03-26 23 views
6

Geolocationに基づいてInstagramとTwitterの両方をスクレープしようとしています。 クエリの検索を実行できますが、ウェブページをもう一度読み込んでデータフレームにフィールドを格納する際に問題が生じています。Selenium PythonによるWeb Scraping [Twitter + Instagram]

ウェブをスクラップするtwitterやInstagramにAPIキーがない例がいくつか見つかりました。しかし、それらは#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の検索クエリのために、私はエラーを取得していないですが、私はより多くの投稿をリロードし、バックのCSVデータフレームに書き込むことができないのですInstagramのための構文エラー

を取得しています。

TwitterとInstagramの両方で緯度経度で検索しようとしています。

私はcsvで地理座標のリストを持っています。私はその入力を使用することも、検索のためのクエリを書くこともできます。

場所での削り取りを完了するにはどんな方法もあります。

ヘルプをよろしくお願いします。

+0

セレンの代わりに[要求](http://docs.python-requests.org/ja/master/)を使用したことはありますか?私はあなたの質問をtwitterに対して実行し、それはうまくいった。また、コードが文字列としてクエリを受け取る必要があります。 'query = geocode%3 ...'行にエラーが表示されます。 –

+0

@フェルナンドアンスで私を助けてください。私はこのウェブのスクレイピングに絶対に慣れていませんし、最近はプログラミングから離れすぎています。本当に私は何をどう進めていくのがもっと混乱しています。 –

答えて

4

私はそれが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でも同じことが働くはずです。

+0

ありがとう答えは..スープをデータフレームに解析することは、私が直面している困難の1つです。 –

+0

多分あなたは[pandas documentation](http://pandas.pydata.org/pandas-docs/安定した/ 10min.html)それはどのように動作するかを理解するために –

+0

質問を投稿する前にしようとしていた..どこにも来ていないので、質問を投稿した.. –