文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何解决Python爬取网页时请求中收到响应400的问题

2023-06-20 21:06

关注

这篇文章将为大家详细讲解有关如何解决Python爬取网页时请求中收到响应400的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一般情况下抓取网页时找到url中可以从 post 请求中获取数据,但得到的响应是400而不是 200时,可以尝试从服务器获得正确的响应,使用json=参数requests进行尝试可以解决。

问题案例:

 import requests    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0',        'Accept': 'application/json',        'Accept-Language': 'en-US,en;q=0.5',        'Content-Type': 'application/x-www-form-urlencoded',        'Origin': 'https://www.ketto.org',        'Sec-Fetch-Dest': 'empty',        'Sec-Fetch-Mode': 'cors',        'Sec-Fetch-Site': 'cross-site',        'Referer': 'https://www.ketto.org/',        'Connection': 'keep-alive',    }    params = (        ('x-algolia-agent', 'Algolia for JavaScript (3.35.1); Browser (lite); angular (8.2.14); angular-instantsearch (3.0.0-beta.4); instantsearch.js (3.7.0); JS Helper (2.28.1)'),        ('x-algolia-application-id', 'NN2UORRIZX'),        ('x-algolia-api-key', 'b2caa1b0589e8db9398d5fe2a40bbaed'),    )    data = [      ('{requests:[{indexName:fundraiser_prod,params:query', ''),      ('hitsPerPage', '9'),      ('hitsPerPage', '1'),      ('hitsPerPage', '1'),      ('hitsPerPage', '1'),      ('maxValuesPerFacet', '10'),      ('maxValuesPerFacet', '10'),      ('maxValuesPerFacet', '10'),      ('maxValuesPerFacet', '10'),      ('page', '1'),      ('page', '0'),      ('page', '0'),      ('page', '0'),      ('highlightPreTag', '__ais-highlight__'),      ('highlightPreTag', '__ais-highlight__'),      ('highlightPreTag', '__ais-highlight__'),      ('highlightPreTag', '__ais-highlight__'),      ('highlightPostTag', '__/ais-highlight__'),      ('highlightPostTag', '__/ais-highlight__'),      ('highlightPostTag', '__/ais-highlight__'),      ('highlightPostTag', '__/ais-highlight__'),      ('facets', '["cause.label","tags","address"]'),      ('facets', '["cause.label"]'),      ('facets', '["tags"]'),      ('facets', '["address"]'),      ('tagFilters', ''),      ('tagFilters', ''),      ('tagFilters', ''),      ('tagFilters', ''),      ('facetFilters', '[["cause.label:"],["tags:"],["address:"]]},{indexName:fundraiser_prod,params:query='),      ('facetFilters', '[["tags:"],["address:"]]},{indexName:fundraiser_prod,params:query='),      ('facetFilters', '[["cause.label:"],["address:"]]},{indexName:fundraiser_prod,params:query='),      ('facetFilters', '[["cause.label:"],["tags:"]]}]}'),      ('attributesToRetrieve', '[]'),      ('attributesToRetrieve', '[]'),      ('attributesToRetrieve', '[]'),      ('attributesToHighlight', '[]'),      ('attributesToHighlight', '[]'),      ('attributesToHighlight', '[]'),      ('attributesToSnippet', '[]'),      ('attributesToSnippet', '[]'),      ('attributesToSnippet', '[]'),      ('analytics', 'false'),      ('analytics', 'false'),      ('analytics', 'false'),      ('clickAnalytics', 'false'),      ('clickAnalytics', 'false'),      ('clickAnalytics', 'false'),    ]    response = requests.post('https://nn2uorrizx-dsn.algolia.net/1/indexesqueries"params = {    "x-algolia-agent": "Algolia for JavaScript (3.35.1); Browser (lite); angular (8.2.14); angular-instantsearch (3.0.0-beta.4); instantsearch.js (3.7.0); JS Helper (2.28.1)",    "x-algolia-application-id": "NN2UORRIZX",    "x-algolia-api-key": "b2caa1b0589e8db9398d5fe2a40bbaed",}data = {    "requests": [        {            "indexName": "fundraiser_prod",            "params": "query=&hitsPerPage=9&maxValuesPerFacet=10&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__%2Fais-highlight__&facets=%5B%22cause.label%22%2C%22tags%22%2C%22address%22%5D&tagFilters=&facetFilters=%5B%5B%22cause.label%3A%22%5D%2C%5B%22tags%3A%22%5D%2C%5B%22address%3A%22%5D%5D",        },        {            "indexName": "fundraiser_prod",            "params": "query=&hitsPerPage=1&maxValuesPerFacet=10&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__%2Fais-highlight__&attributesToRetrieve=%5B%5D&attributesToHighlight=%5B%5D&attributesToSnippet=%5B%5D&tagFilters=&analytics=false&clickAnalytics=false&facets=%5B%22cause.label%22%5D&facetFilters=%5B%5B%22tags%3A%22%5D%2C%5B%22address%3A%22%5D%5D",        },        {            "indexName": "fundraiser_prod",            "params": "query=&hitsPerPage=1&maxValuesPerFacet=10&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__%2Fais-highlight__&attributesToRetrieve=%5B%5D&attributesToHighlight=%5B%5D&attributesToSnippet=%5B%5D&tagFilters=&analytics=false&clickAnalytics=false&facets=%5B%22tags%22%5D&facetFilters=%5B%5B%22cause.label%3A%22%5D%2C%5B%22address%3A%22%5D%5D",        },        {            "indexName": "fundraiser_prod",            "params": "query=&hitsPerPage=1&maxValuesPerFacet=10&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__%2Fais-highlight__&attributesToRetrieve=%5B%5D&attributesToHighlight=%5B%5D&attributesToSnippet=%5B%5D&tagFilters=&analytics=false&clickAnalytics=false&facets=%5B%22address%22%5D&facetFilters=%5B%5B%22cause.label%3A%22%5D%2C%5B%22tags%3A%22%5D%5D",        },    ]}data = requests.post(url, params=params, json=data).json()print(json.dumps(data, indent=4))

打印结果:

{    "results": [        {            "hits": [                {                    "id": 180773,                    "title": "Feeding From Far-Ration Distribution Amid Lockdown",                    "end_date": "2021-09-11 23:59:59",                    "amount_requested": 65000000,                    "entity_details_id": 1505699,                    "creator_entity_details_id": 1463388,                    "address_1": "Mumbai",                    "creation_date": "2020-04-05 15:10:12",                    "parent_cause_id": 48,                    "event_entity_details_id": 1399904,                    "sucess_story_flag": 0,                    "custom_tag": "FeedingFromFarForCorona",                    "beneficiary": {                        "full_name": "Prayatna "                    },                    "raised": {                        "campaign_id": 180773,                        "backers": 10616,                        "raised": "45094771.40",                        "usdraised": "644211.02",                        "currencies": {                            "INR": 45094771,                            "USD": 644211,                            "GBP": 501053,                            "EUR": 536843,                            "AED": 2254739,                            "SGD": 867207,                            "SAR": 2254739                        }                    },                    "widget": {                        "media_type": "image",                        "file_name": "wid60a133a89542c.jpg",                        "path": "/media/campaign/180000/180773/image/",                        "cdn_path": "https://d1vdjc70h9nzd9.cloudfront.net/media/campaign/180000/180773/image/wid60a133a89542c.jpg"                    },                    "cause": {                        "info_1": "Food & Hunger",                        "info_3": "Orange",                        "label": "Food & Hunger"                    },                    "campaigner": {                        "id": 1463388,                        "fname": "Pooja Reddy",                        "lname": null,                        "full_name": "Pooja Reddy ",                        "disable_foreign_donation": 0,                        "no_80g": false,                        "user_details_id": 1470493,                        "entity_type": "individual",                        "tax_benefit": false,                        "avtar": {                            "entity_type_id": 1463388,                            "entity_type": "individual",                            "media_type": "image",                            "file_name": "60efdb6db4758.jpg",                            "path": "/media/individual/1463000/1463388/image/",                            "cdn_path": "https://d1vdjc70h9nzd9.cloudfront.net/media/individual/1463000/1463388/image/60efdb6db4758.jpg"                        }                    },                    "taxexempted": {                        "id": 1505699,                        "no_80g": true,                        "entity_type": "ngo",                        "tax_benefit": true                    },... and so on.}

关于“如何解决Python爬取网页时请求中收到响应400的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯