2017-05-19 19 views
1

Pythonを使用して、私は不動産のウェブサイトをスクラップしてアパートについての情報を得ようとしています。必要な情報はすべて、ページの先頭に格納されているjavascript変数(ava_data)にあります。urlopen/requests.getすべてのページコンテンツを取得しない

私はcloud9(オンラインIDE)から取り組んでいますが、私はそれを切り替えない方がいいです。 私は美味しいスープを掻き取りに使用しています。

from bs4 import BeautifulSoup 
import os 
import requests 

url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40' 
seloger_html = requests.get(url) 
soup = BeautifulSoup(seloger_html.text,'html.parser') 
path = os.getcwd() + '/COMPLET/scrap_seloger.txt' 
f = open(path, 'w') 
f.write(soup.prettify().encode('utf8')) 

は私が一貫は私のスープのページからすべての情報を取得することはできません。これを確認するために、私はprettifiedスープをtxtファイルに書きました。
それが動作するとき、私は(私はChromeでの検査から得るものと同じ)次のファイルを取得:それはしていない場合、私は次の取得https://ufile.io/eue0b
を:https://ufile.io/f1dnx

私は右のファイルを取得するために管理しています数十回の試行のうち4〜5回だけである。私が知ることから、urllib.urlopen()を試してみるのは初めてで、requests.get()で試したのは初めてです。私が知る限り、私はそれが他の時代に働く前に特別なことをしなかった。それが成功するたびに、次回は失敗しました。

  • JSを使用せずにDOMを取得するURLを開く前に、ChromeでJavascriptを無効にしてみました。以前と同じでした。 - >私はそれがJSでDOMに追加されたものの問題ではないと思います。
  • 前にヒントとして、私はurllibと要求を試みました。どちらも一貫して動作しません。
  • セッションが毎回変更されるため、クッキーは問題ではありません。
  • 私はCloud9を使用しているため、ブラウザでSeleniumを使用することはできません。
+0

質問に[mcve] *を入れてください。 See [ask]。 – jonrsharpe

+0

申し訳ありませんが、私はそれを見ていませんでした。私は今それを追加しました。 –

答えて

0

このサイトでは、いくつかの擦り傷防止技術が使用されています。あなたはUser-Agentヘッダーをブラウザの訪問を偽装するように設定する必要があります。

url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40' 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'} 
seloger_html = requests.get(url, headers=headers) 

また、あまりにも速くスクレイプしないようにしてください。

+0

ありがとう!出来た!私はそれが私が逃したいくつかのばかげたことではなかったことを知ってうれしいです。おそらく、掻き傷防止技術を使用していることがわかった理由を教えてください。 –

関連する問題