(已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题

已解决,使用关键词进行百度搜索,然后爬取搜索结果,请求数据后,返回的是百度安全验证,网络不给力,请稍后重试。无法请求到正确数据。且尝试在header中增加Accept参数还是不行。

一、问题产生的现象

     在学习过程中,写了一小段练习用的爬取程序,获取百度关键词搜索后的结果,代码如下:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36',
}
url = 'https://www.baidu.com/s?wd=python'
reponse = requests.get(url, headers=headers, timeout=10)
reponse.encoding = reponse.apparent_encoding
content = reponse.text
print(content)

        运行后,打印出来的结果显示:   (已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题_第1张图片

 (已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题_第2张图片

     但是,我把这个url网址复制到浏览器打开时可以看到搜索结果的:

   (已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题_第3张图片 


 二、问题解决过程

   1、看到网上有人说要在header中,增加一个accept参数,于是加了下:      

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.95 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
}

     然后运行,哦哦,还是打印出来的是百度安全验证。

  2、从这个错误来看,像是百度有反爬虫措施,需要验证才能获取它的数据。但我记得之前是可以的,难道现在不可以了么。

   于是看了之前的代码,发现我之前写的是http而不是https 于是修改下url:

url = 'http://www.baidu.com/s?wd=python'

   运行,哦,终于成功,不再是百度安全验证的信息了:

(已解决)关键词爬取百度搜索结果,返回百度安全验证,网络不给力,请稍后重试,无法请求到正确数据的问题_第4张图片

  3、试着将一开始加的accept参数删除,依然能够成功,说明还是这个url要使用http的问题。


三、最终解决方案

      将url中的https修改为http

你可能感兴趣的:(程序开发常见问题汇总,python,爬虫,百度,安全验证,反爬)