【问题标题】:requests does not retrieve html content from some websites请求不会从某些网站检索 html 内容
【发布时间】:2018-12-06 12:49:33
【问题描述】:

当尝试获取网站的 HTML 内容时,在本例中为 www.arrow.com,我什么也得不到,网络浏览器一直在等待。

import requests 

params = {'q': code}
url = "https://www.arrow.com/en/products/search"
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'cache-control': "no-cache",
    'postman-token': "564e5d76-282f-98f3-860b-d8e09e2e9073"
}
r = requests.get(url, headers=headers,params=params)
tree = html.fromstring(r.content)

奇怪的是,我可以使用 Postman 获取正确的内容并通过网络浏览器访问。

Postman 在使用 HTTP 时使用此脚本:

GET /en/products/search?q=cccccccc HTTP/1.1
Host: www.arrow.com
Cache-Control: no-cache
Postman-Token: c3821bb3-767b-b8c7-105a-84fd16291245

或使用 Python3:

import http.client

conn = http.client.HTTPSConnection("www.arrow.com")

headers = {
    'cache-control': "no-cache",
    'postman-token': "740c5681-3e67-b605-3040-964be3ea7296"
    }

conn.request("GET", "/en/products/search?q=cccccccc", headers=headers)

res = conn.getresponse()
data = res.read()


print(data.decode("utf-8"))

使用最后一个,我也一无所获。

【问题讨论】:

    标签: python web-scraping python-requests urllib3


    【解决方案1】:

    更改User-Agent 应该可以解决这个问题,至少我在我的情况下看到了。您的 params 也不正确。试试这个看看会发生什么:

    import requests 
    from lxml.html import fromstring
    
    url = "https://www.arrow.com/en/products/search?"
    
    code = "apple" #any available search terms
    
    r = requests.get(url, 
                headers={'User-Agent': 'Mozilla/5.0'},
                params={'cat':'','q': code,'r': True}
                )
    tree = fromstring(r.content)
    items = tree.cssselect("h1[data-search-term]")[0].text.strip()
    print(items) #it should give you the quantity of search result
    

    【讨论】:

    • 非常感谢。测试代码时,我得到 'ModuleNotFoundError: No module named 'cssselect'' .. 我是 python 的新手
    • 我已经安装了'cssselect',现在完美了。非常感谢
    • 很高兴它为你工作@YasserKhalil。希望你一切顺利。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2012-09-07
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多