【问题标题】:Facing issues working with GET request面临使用 GET 请求的问题
【发布时间】:2017-05-26 09:41:09
【问题描述】:

当我运行我的第一个脚本时,它会获取结果,但是当我运行我的第二个脚本时,我什么也得不到。我没有发现我的第二个脚本中缺少任何东西来获得所需的结果。第一个脚本中使用的 url 与我在开发人员工具中找到的要求连接在一起。当我使用基本 URL 和参数时,为什么我的第二个脚本不起作用?

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)

【问题讨论】:

    标签: python-3.x web-scraping get python-requests


    【解决方案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

    【讨论】:

    • 感谢 Ernie,为您提供快速有效的解决方案。要知道的一件事:我怎样才能获得准确的网址?查看脚本中的 url,您可以看到它已在我的帖子中的第一个脚本中使用,并与它连接了一些必填字段。
    • @SMth80 通常,URL 和查询字符串由字符 ? 分割。对于像https://www.example.com/path1/path2?key1=value1&key2=value2这样的给定URL,https://www.example.com/path1/path2是指向某个资源(网页)或HTTP API的准确URL,key1=value1key2=value2是您需要放入params的查询条件。跨度>
    • 感谢 Ernie 所做的一切。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2012-06-06
    • 2011-06-12
    • 1970-01-01
    • 2014-11-23
    • 2013-07-08
    • 2012-04-11
    相关资源
    最近更新 更多