女神吧
为什么'user-agent'爬不出贴吧图片,写成'uesr-agent'能爬出 'uesr-agent' 肯定是拼写错误的,如果拼写错误能够正常爬取,那么说明服务器是不需要你指定 'user-agent'。 小甲鱼 发表于 2021-1-7 16:39'uesr-agent' 肯定是拼写错误的,如果拼写错误能够正常爬取,那么说明服务器是不需要你指定 'user-agent'。
那为啥拼写正确爬不出来 樊敬礼 发表于 2021-1-7 16:52
那为啥拼写正确爬不出来
你把你的代码贴出来吧 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)) 樊敬礼 发表于 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/w%3D580/sign=46a7b672b68b87d65042ab1737092860/89d24734970a304ed0a4a4b9c6c8a786c8175c38.jpg
89d24734970a304ed0a4a4b9c6c8a786c8175c38.jpg
樊敬礼 发表于 2021-1-7 17:30
import urllib.request
import re
ua随便写写,不用原来那么长的内容试试。
req.add_header('User-Agent', 'xxxx') 就很奇怪,加了一行就跑出来了
import ssl 然后第五行重写一下?
import urllib.request
import re, ssl
def open_url(url):
ssl._create_default_https_context = ssl._create_unverified_context
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]
print(filename)
urllib.request.urlretrieve(each,filename,None)
if __name__ == '__main__':
url = "https://tieba.baidu.com/p/7113849191"
get_img(open_url(url))
你真的确定你不是看错了文件夹,没找到那张图导致的吗{:10_245:} 写成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爬不出来 本帖最后由 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”,此时返回错误页面。
页:
[1]