9

私は、公共のInstagramアカウントから画像をスクラップしたいと思います。私はかなりbs4に精通しているので、私はそれを始めました。 Chrome上の要素インスペクタを使用して、ピクチャは並べ替えられていないリストにあり、liにはクラス '写真'があることに気付きました。そのため、findAllで酷くすることはできません。Instagram with BeautifulSoupを取り除く方法

間違った:それは何も(以下コード)を返さないと、私はすぐにコードは要素インスペクタに示されており、私がリクエストから描いたコードは、私が引っ張っコードで同じ AKAなし順不同リストではなかったことに気づきますリクエストから。

要素インスペクタに表示されるコードをどのように取得できますか?

from bs4 import BeautifulSoup 
import requests 
import re 

r = requests.get('http://instagram.com/umnpics/') 
soup = BeautifulSoup(r.text) 
for x in soup.findAll('li', {'class':'photo'}): 
    print x 

はあなたの助けをありがとう:

は、念のために、これは順不同リストがなかったため動作しませんでした、開始するための私のコードでした。

+0

このページはJavaScriptを大量に使用しています。ブラウザでダウンロードしたものを見るには、* source *ページ(Chrome:View - > Developer - > View Source)を見たいと思っています。インスペクタで表示されるのは、ページから参照されるJavaScriptを実行した後にブラウザが構築したものです。 –

答えて

8

ページのソースコードを見ると、いくつかのjavascriptがウェブページを生成することがわかります。要素ブラウザで表示されるのは、スクリプトの実行後のWebページで、beautifulsoupはhtmlファイルを取得します。レンダリングされたWebページを解析するには、WebページをレンダリングするためにSeleniumのようなものを使用する必要があります。

ので、例えば、これは、それがセレンでどのように見えるかです:

from bs4 import BeautifulSoup 
import selenium.webdriver as webdriver 

url = 'http://instagram.com/umnpics/' 
driver = webdriver.Firefox() 
driver.get(url) 

soup = BeautifulSoup(driver.page_source) 

for x in soup.findAll('li', {'class':'photo'}): 
    print x 

今スープは、あなたが期待しているものでなければなりません。

関連する問題