2017-05-26 7 views
0

最初のスクリプトを実行すると結果が取得されますが、2番目のスクリプトを実行すると何も得られません。必要な結果を得るために2番目のスクリプトに欠けているものが見つかりません。最初のスクリプトで使用されたURLは、開発者ツールで見つかった要件と連結されています。パラメータと一緒にベースURLを使用すると、2番目のスクリプトが機能しないのはなぜですか?GET要求を扱う面倒な問題

import requests 
from lxml import html 
response = requests.get("http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xfunny+bear.TRS0&_nkw=funny+bear&_sacat=237") 
tree=html.fromstring(response.text) 
titles=tree.xpath("//h3[@class='lvtitle']") 
for title in titles: 
    name=title.xpath(".//a[@class='vip']/text()")[0] 
    print(name) 

import requests 
from lxml import html 
payload={'_from':'R40','_trksid':'p2050601.m570.l1313.TR0.TRC0.H0.Xfunny+bear.TRS0','_nkw':'funny+bear','_sacat':'237'} 
headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'} 
response = requests.get("http://www.ebay.com/",data=payload,headers=headers) 
tree=html.fromstring(response.text) 
titles=tree.xpath("//h3[@class='lvtitle']") 
for title in titles: 
    name=title.xpath(".//a[@class='vip']/text()")[0] 
    print(name) 

答えて

1

最初に、あなたのURLはhttp://www.ebay.com/sch/i.htmlです。

wwww.example.com?key1=value1&key2=value2のようなクエリ文字列を作成する場合は、dataではなく、paramsをパラメータとして使用する必要があります。

このコードは機能するはずです。

import requests 
from lxml import html 
payload = {'_from':'R40','_trksid':'p2050601.m570.l1313.TR0.TRC0.H0.Xfunny+bear.TRS0','_nkw':'funny+bear','_sacat':'237'} 
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'} 
response = requests.get("http://www.ebay.com/sch/i.html", params=payload, headers=headers) 
tree = html.fromstring(response.text) 
titles = tree.xpath("//h3[@class='lvtitle']") 
for title in titles: 
    name = title.xpath(".//a[@class='vip']/text()")[0] 
    print(name) 

参考:http://docs.python-requests.org/en/master/user/quickstart/#passing-parameters-in-urls

+0

おかげアーニー、あなたの迅速かつ効果的なソリューションのために。知っておくべきこと:正確なURLを取得するにはどうすればよいですか?あなたのスクリプトのURLを見ると、私の投稿の最初のスクリプトで使用されていて、いくつかの必須フィールドが連結されていることがわかります。 – SIM

+0

@ SMth80 通常、URLとクエリ文字列は、文字 '?'で分割されます。 'https://www.example.com/path1/path2?key1 = value1&key2 = value2'のような指定されたURLに対して、' https:// www.example.com/path1/path2'は正確なURLが特定のリソース(Webページ)またはHTTP APIの 'key1 = value1'と' key2 = value2'は、 'params'に入れる必要のあるクエリ条件です。 – Ernie

+0

すべてのおかげでアーニー。 – SIM

関連する問題