【爬虫】如何解决爬虫爬取图片时遇到百度安全验证的问题?即页面上没有显示图片的源地址,没有img标签,只有div标签

大家好,我是好学的小师弟。这周工作中我在爬虫爬取百度图片的时候 遇到了一个问题,即爬取百度图片的时候,打印爬取的百度图片页面,打印出来的text正文中只有div标签,没有想要下载图片的img标签和图片src原图片地址。如下所示:




    
    百度安全验证
    
    
    
    
    
    
    
    
    
    


    
网络不给力,请稍后重试

问题反馈

后来发现了,这是百度的反爬虫机制所导致的。察觉到你是爬虫而不是人为下载。

 
   
    百度安全验证

 思路:一般我们都是用requests发起get请求,有的时候我们还会加个请求头。但是这个很容易被反爬虫所查获,所以我们尽量要装的像一点,把自己伪装成一个"真人"

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}  #header里面只有一个user-agent太少了

解决方法:打开F12,这里以谷歌浏览器为例

【爬虫】如何解决爬虫爬取图片时遇到百度安全验证的问题?即页面上没有显示图片的源地址,没有img标签,只有div标签_第1张图片

把这四个键值对也给copy下来,加到你之前写的请求头header中

'Cookie':'',#cookie你先自己登录百度帐号就有了
'Accept':'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, br',
'Accept-Language':'zh-CN,zh;q=0.9'

 即应该写成下面这样

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
        'Cookie':'',#cookie需要你先自己在浏览器登录百度账号,再按f12就有了
        'Accept':'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9'
        }

这样你就能成功获取页面信息,接着进行正则表达式,找到图片源地址了

完整代码

import re
import requests
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
        'Cookie':'',#自己先在浏览器登录百度账号
        'Accept':'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9'
        }
url='https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&fm=index&pos=history&word=%E5%A4%B4%E5%83%8F'
html=requests.get(url,headers=header)
html.encoding='utf8'
print(html.text)

新人创作不易,觉得不错的看官,点个赞吧,么么哒!!!

转载注明出处!

你可能感兴趣的:(百度,爬虫,python,前端,正则表达式)