2017-05-26 38 views
0

當我運行我的第一個腳本時,它獲取結果,但是當我運行我的第二個腳本時,我什麼也得不到。我沒有發現我的第二個腳本中缺少任何內容以獲得所需的結果。第一個腳本中使用的url與我在開發人員工具中找到的要求連接在一起。爲什麼當我使用基本url和參數時,我的第二個腳本不工作?使用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

首先,您的網址是http://www.ebay.com/sch/i.html。 (不只是ebay.com)

然後,如果你想建立一個查詢字符串,如wwww.example.com?key1=value1&key2=value2,你需要使用params作爲參數,而不是data

此代碼應該工作。

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

感謝厄尼,您的快速和有效的解決方案。有一件事要知道:我怎樣才能得到準確的網址?查看腳本中的網址,可以看到它已在我的文章的第一個腳本中使用,其中包含一些必填字段。 – SIM

+0

@ SMth80 通常,URL和查詢字符串被char'?'分隔。 對於給定的URL,例如'https://www.example.com/path1/path2?key1 = value1&key2 = value2','https:// www.example.com/path1/path2'是準確的URL指向某些資源(網頁)或HTTP API,「key1 = value1」和「key2 = value2」是需要放入「params」中的查詢條件。 – Ernie

+0

謝謝厄尼的一切。 – SIM