鱼C论坛

 找回密码
 立即注册
查看: 1955|回复: 9

女神吧

[复制链接]
发表于 2021-1-7 16:31:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么'user-agent'爬不出贴吧图片,写成'uesr-agent'能爬出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-7 16:39:02 | 显示全部楼层
'uesr-agent' 肯定是拼写错误的,如果拼写错误能够正常爬取,那么说明服务器是不需要你指定 'user-agent'。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-7 16:52:42 | 显示全部楼层
小甲鱼 发表于 2021-1-7 16:39
'uesr-agent' 肯定是拼写错误的,如果拼写错误能够正常爬取,那么说明服务器是不需要你指定 'user-agent'。

那为啥拼写正确爬不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-7 17:11:09 | 显示全部楼层
樊敬礼 发表于 2021-1-7 16:52
那为啥拼写正确爬不出来

你把你的代码贴出来吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-7 17:30:07 | 显示全部楼层
suchocolate 发表于 2021-1-7 17:11
你把你的代码贴出来吧

import urllib.request
import re

def open_url(url):
    req = urllib.request.Request(url)
    req.add_header('Uesr-Agent','Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36')
    page = urllib.request.urlopen(req)
    html = page.read().decode('utf-8')

    return html

def get_img(html):
    p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'
    imglist = re.findall(p,html)

    for each in imglist:
        filename = each.split("/")[-1]
        urllib.request.urlretrieve(each,filename,None)

if __name__ == '__main__':
    url = "https://tieba.baidu.com/p/7113849191"
    get_img(open_url(url))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-7 17:56:41 | 显示全部楼层
樊敬礼 发表于 2021-1-7 17:30
import urllib.request
import re

能下啊..

C:\Users\ccd\AppData\Local\Programs\Python\Python36\python.exe D:/ccd_test/text.py
http://tiebapic.baidu.com/forum/ ... 6c8a786c8175c38.jpg
89d24734970a304ed0a4a4b9c6c8a786c8175c38.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-7 18:29:45 | 显示全部楼层
樊敬礼 发表于 2021-1-7 17:30
import urllib.request
import re

ua随便写写,不用原来那么长的内容试试。
  1. req.add_header('User-Agent', 'xxxx')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-7 19:05:15 | 显示全部楼层
就很奇怪,加了一行就跑出来了
import ssl 然后第五行重写一下?

  1. import urllib.request
  2. import re, ssl

  3. def open_url(url):
  4.     ssl._create_default_https_context = ssl._create_unverified_context
  5.     req = urllib.request.Request(url)
  6.     req.add_header('Uesr-Agent','Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36')
  7.     page = urllib.request.urlopen(req)
  8.     html = page.read().decode('utf-8')

  9.     return html

  10. def get_img(html):
  11.     p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'
  12.     imglist = re.findall(p,html)

  13.     for each in imglist:
  14.         
  15.         filename = each.split("/")[-1]
  16.         print(filename)
  17.         urllib.request.urlretrieve(each,filename,None)

  18. if __name__ == '__main__':
  19.     url = "https://tieba.baidu.com/p/7113849191"
  20.     get_img(open_url(url))
复制代码


你真的确定你不是看错了文件夹,没找到那张图导致的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-9 13:47:53 | 显示全部楼层
写成uesr-agent或者req.add_header('Uesr-Agent','Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36')这一句删掉都能爬出来,唯独写成user-agent爬不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-9 15:34:55 | 显示全部楼层
本帖最后由 YunGuo 于 2021-1-9 15:53 编辑

这个是百度贴吧对user-agent的判断问题。
百度的ua判断js代码是:判断ua中如果包含 “Android” 或 “Adr”,就不会返回正常页面,否则返回正常。
而你设置的ua本质上是没有设置成功的,因为ua拼写错误,所以实际上urllib在请求的时候使用的ua是默认的“Python-urllib/3.X”(python请求库和版本)。
百度ua判断代码无法获取到你设置的ua(拼写错误),你设置的ua会被当做自定义请求头;百度获取到的ua是默认的ua,但这个判断只判断“Android” 或 “Adr”,而默认ua符合要求,不存在这两个字符串。所以可以返回正常页面。

总结起来就是:
当你拼写错误的时候,ua使用的是默认ua,百度获取到的也是默认ua,默认ua中不包含 “Android” 或 “Adr”字符串,此时返回正常页面;
当你拼写正确的时候,ua使用的就是你定义的ua,百度获取到的就是你定义的ua,而你定义的ua中包含“Android”,此时返回错误页面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 21:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表