老师参与

用requests爬取百度图片的关键反反爬措施

周文扬 发表于2021年02月11日
<p><code class="brush:python;toolbar:false" >import&nbsp;re import&nbsp;random import&nbsp;requests #很关键的反反爬措施,不做如此定义会导致爬取失败。 he={ 'Host':'image.baidu.com', 'Connection':'keep-alive', 'Cache-Control':'max-age=0', 'Upgrade-Insecure-Requests':'1', 'User-Agent':'Mozilla/5.0&nbsp;(Windows&nbsp;NT&nbsp;10.0;win64;&nbsp;x64)AppleWebKit/537.36&nbsp;(KHTML,&nbsp;like&nbsp;Gecko)&nbsp;Chrome/87.0.4280.88&nbsp;Safari/537.36', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/siqned-exchange;v=b3;q=0.9' } def&nbsp;getBaiduPictures(gjc,n):#下载n个百度图片搜来的关于word的图片保存到本地 url&nbsp;=&nbsp;&quot;https://image.baidu.com/search/index?tn=baiduimage&amp;ipn=r&amp;ct=201326592&amp;cl=2&amp;lm=-1&amp;st=-1&amp;fm=index&amp;fr=&amp;hs=0&amp;xthttps=111111&amp;sf=1&amp;fmq=&amp;pv=&amp;ic=0&amp;nc=1&amp;z=&amp;se=1&amp;showtab=0&amp;fb=0&amp;width=&amp;height=&amp;face=0&amp;istype=2&amp;ie=utf-8&amp;word=&quot; urljh&nbsp;=&nbsp;[url+i&nbsp;for&nbsp;i&nbsp;in&nbsp;gjc] hqsj=[] for&nbsp;u&nbsp;in&nbsp;urljh: hqsj.append(requests.get(u,headers=he).text)&nbsp;&nbsp;#定义headers,反反爬措施。 for&nbsp;d&nbsp;in&nbsp;range(len(hqsj)): r=re.findall('thumbURL&quot;:&quot;(.*?)&quot;',hqsj[d])[0:n] for&nbsp;i&nbsp;in&nbsp;range(len(r)): try: p&nbsp;=&nbsp;requests.get(r[i],&nbsp;stream=True) f&nbsp;=&nbsp;open('C:\\Users\\明月心\\temp\\{0}{1}{2}'.format(gjc[d],i,&quot;.jpg&quot;),&nbsp;&quot;wb&quot;)&nbsp;#&quot;wb&quot;表示二进制写方式打开文件 f.write(p.content)&nbsp;&nbsp;#图片内容写入文件 f.close() except&nbsp;Exception&nbsp;as&nbsp;e&nbsp;: pass so&nbsp;=&nbsp;[&quot;佳人&quot;,&quot;美景&quot;,&quot;牛&quot;] getBaiduPictures(so,20)</code></p>
3 回复

    1楼

  • 北大郭炜 发表于2021年02月11日
    0 | 0 | 举报
    <p>这个有点深奥了。你是怎么发现的?</p>
    北大郭炜 发表于2021年02月11日
    添加评论
  • 2楼

  • 周文扬 发表于2021年02月11日
    0 | 0 | 举报
    <p>郭老师,我是在用requests库、pyppeteer库加上常规反爬措施爬取百度图片屡次失败的情况下,在一个QQ群向人请教,看到有人贴出的爬取成功的图片,我照着图片一个个代码敲上来的,我也不知道是啥原理。请郭老师多多点拨 :)</p>
    周文扬 发表于2021年02月11日
    添加评论
  • 3楼

  • 张敏atMooc 发表于2021年02月11日
    0 | 0 | 举报
    <p>你可以先试试你要爬的html是否可以chrome打开</p>
    张敏atMooc 发表于2021年02月11日
    添加评论