2017-08-03 1 views
0

lowes.comから製品情報をスクラップしようとしています。私のテストは特にこの製品AirStone 8-sq ft Autumn Mountain Faux Stone Veneerです。 JavaScriptを有効にしていないページにアクセスしたとき(urllib /要求が拾わないかもしれないことを確認するため)上記のいずれかのパッケージを使用しようとすると、ウェブページWebscrapingがドキュメントurllibまたはリクエスト全体を取得していない

ちょうどそのようなセクションは、私がスクレイピングに必要なセクションです(特に価格情報、他のすべては魔法のように利用できます)。私はスピードのためにセレンを使用しないことを好むでしょう。要求とthusly

共通項目

from urlopen import Request, urlopen 
import requests # switch as needed with urlopen 
import gzip # manual deflation required with Request object urlopen or so I've found 

url = "https://www.lowes.com/pd/AirStone-8-sq-ft-Autumn-Mountain-Faux-Stone-Veneer/50247201" 
headers = { 
     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 
     "Accept-Encoding": "gzip, deflate, br", 
     "Accept-Language": "en-US,en;q=0.8", 
     "Cache-Control": "no-cache", 
     "Connection": "keep-alive", 
     "DNT": "1", 
     # "Host": "www.lowes.com", Tried, no difference 
     "Pragma": "no-cache", 
     # "Referer": "https://www.lowes.com/", Tried, no difference 
     "Upgrade-Insecure-Requests": "1", 
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1 Win64 x64) AppleWebKit/537.36 (KHTML," 
     " like Gecko) Chrome/59.0.3071.115 Safari/537.36" # <=- Tried placing all on one line, didn't make a difference 
    } 

Urlopen

req = Request(url, None, headers) 
page = gzip.decompress(urlopen(req).read()).decode('utf-8') 
with open("content.txt", "w") as f: 
    f.write(page) # <=- missing the 59.97 price tag anywhere in the document :(

要求

sessions = requests.Session() 
page = sessions.get(self.url, headers=headers) 

with open("content.txt", "w") as f: 
    f.write(page) # <=- Also missing the 59.97 price tag anywhere in the document :'(

を見てurllibは両方のための私の現在の使用量は、そこで問題は、私が何かをしないのですか?これが欠落する理由はありますか?それは私がそれが多くの時間の問題であることを見たようにデータを掻き集める前に意図的にそれを無効にするので、javascriptに関連していません。

ご協力いただければ幸いです。

+0

あなたが戻ってきたページには、「価格と在庫状況についてあなたの場所を入力してください」というメッセージが表示されます。実際のブラウザでは、あなたの場所をウェブサイトに提供している前回の訪問時のCookieがあります。リクエストメソッドのいずれかでCookieを含めることは可能ですが、詳細はわかりません。 – jasonharper

+0

それは私がクッキーを削除したと思った素晴らしいキャッチです。どうやら私はしていなかった。それは非常に非常に良いインターネットの住人に感謝:) Tally-Ho私が見つけることができるかを確認する – Akidi

答えて

0

jasonharperからのコメントです。クッキーは答えとして終わった。適切なものを見つけることで、必要なすべてのデータを抽出することができました。

要するに、ウェブサイトをスクラップする前に、スクリプトの内容を確認する以外の理由がない限り、常にCookieを無効/削除してください。

特定のクッキーは{"sn": "####"}(店舗番号)です。店舗を選んで、その上にカーソルを合わせると、リンクされているURLを調べることができます店舗番号。

関連する問題