python web请求抓取返回错误404



我正在尝试web抓取这个黄页网站获得联系人详细信息下面我试图做一个POST请求,但返回404错误信息。我使用https://curl.trillworks.com/将我的响应转换为python。

import requests
headers = {
'authority': 'www.google-analytics.com',
'cache-control': 'max-age=0',
'sec-ch-ua': '^\^Chromium^\^;v=^\^94^\^, ^\^Google',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '^\^Windows^\^',
'upgrade-insecure-requests': '1',
'origin': 'https://www.yellowpages.vu',
'content-type': 'text/plain',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/94.0.4606.61 Safari/537.36',
'accept': '*/*',
'sec-fetch-site': 'cross-site',
'sec-fetch-mode': 'cors',
'sec-fetch-user': '?1',
'sec-fetch-dest': 'empty',
'referer': 'https://www.yellowpages.vu/search/results',
'accept-language': 'en-US,en;q=0.9,pt;q=0.8',
'cookie': 'c48afa9a35ba10b75b2d5013ea9c8a8e=5c508b71eea0e6b13c24cb2d048b2fff; 
SPro_ssid=163282557391.71.0; _ga=GA1.2.1650230856.1632825595; 
_gid=GA1.2.1275902665.1632825595; _gat=1',
'Referer': 'https://www.yellowpages.vu/templates/yellowpages/XTC/css.php? 
id=15&groups=typo,grid,style1,css3effects',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/94.0.4606.61 Safari/537.36',
'Origin': 'https://www.yellowpages.vu',
'content-length': '0',
}
params = (
('reset', '1'),
)
data = {
'xt_search_for': 'car',
'to_sid_list_1': '',
'field_city': '',
'ssid': '163282557391.71.0',
'sid': '1',
'task': 'search.search',
'option': 'com_sobipro',
'Itemid': '187',
'6f7efb93929c56901a56bdeab2f7e50c': '1',
'sectionid': '1',
'default_query': '',
'field_categories': '',
'sp_search_for': 'car'
}
response = requests.post('https://www.yellowpages.vu/search/index.php', 
headers=headers, params=params, data=data)
print(response)

最好不要指定Content-LengthContent-Type标头,因为这些将为您处理,特别是在使用datajsonkwargs时:

from requests import Request
r = Request(
'POST',
'https://yellowpages.com'
headers={'authority': 'www.google-analytics.com'}
params=(('reset', '1'),),
data={'sid': '1'}
)
req = r.prepare()
req.headers
{'authority': 'www.google-analytics.com', 'Content-Length': '5', 'Content-Type': 'application/x-www-form-urlencoded'}

这在执行requests.<http_verb>

时在幕后完成

在标题中,有以下行:

'content-type': 'text/plain',

这是对网站的干扰,因为实际的内容类型应该是:

'content-type': 'application/x-www-form-urlencoded',

更新:关于你的后续问题,我不能完全确定为什么网站会对不同的请求进行调试,但我发现通过完全删除标头,代码可以工作。需要指出的是,就像@C一样。如上所述,您实际上不需要指定头文件,因为头文件通常由模块补充。

在这些修复之后,代码应该可以正常工作了:

import requests
data = {
"xt_search_for": "car",
"to_sid_list_1": "",
"field_city": "",
"ssid": "163282557391.71.0",
"sid": "1",
"task": "search.search",
"option": "com_sobipro",
"Itemid": "187",
"6f7efb93929c56901a56bdeab2f7e50c": "1",
"sectionid": "1",
"default_query": "",
"field_categories": "",
"sp_search_for": "car",
}
response = requests.post(
"https://www.yellowpages.vu/search/index.php",
data=data
)
print(response.status_code) # 200 OK
print(response.text) # Cars in the results page

相关内容

  • 没有找到相关文章

最新更新