Python 爬虫入门问题

我这个代码运行后,输入任意中文,然后用编译器打搜索.html,为啥会呈现图片中的文字:网络不给力,请稍后重试,不理解。希望得到解答,谢谢。

import urllib.request
import urllib.parse

# 拼接URL
basedurl = "http://baidu.com/s?"
key = input("请输入要搜索的内容:")

# 进行urlencode()编码
wd = {"wd": key}
key = urllib.parse.urlencode(wd)

url = basedurl + key
headers = {"User-Agent": "Mozilla/5.0"}

# 创建请求对象
req = urllib.request.Request(url, headers=headers)

# 获取响应对象
res = urllib.request.urlopen(req)
html = res.read().decode("utf-8")


# 写入本地文件
with open("搜索.html", "w", encoding="utf-8") as f:
      f.write(html)

最佳答案

爬取搜索引擎?很明显,百度搜索查出来了你是机器人。我之前弄过百度搜索和百度翻译,基本上百度的网站都是cookie验证而不是user-agent认证的。所以说,user-agent其实不用加的,但是cookie必须要加。否则,百度会判断你是机器人并给你个安全验证。
参考代码:

import urllib.request
import urllib.parse

# 拼接URL
basedurl = "http://baidu.com/s?"
key = input("请输入要搜索的内容:")

# 进行urlencode()编码
wd = {"wd": key}
key = urllib.parse.urlencode(wd)

url = basedurl + key
headers = {"Cookie": "BAIDUID=F38AC2419CF0AC3B3A3DB41595EB6F9F:FG=1; BIDUPSID=F38AC2419CF0AC3B3A3DB41595EB6F9F; PSTM=1585882998; BD_UPN=12314353; yjs_js_security_passport=2413cfeabab8c429a825972715f9d67519fdc472_1586848693_js; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; sugstore=0; delPer=0; BD_CK_SAM=1; PSINO=6; H_PS_PSSID=30970_1425_21096_31186_31229_30824_31164_22157; H_PS_645EC=9c74rZPiR3LwXxmfeU8X%2BBOX16mULH1FiPiE%2BjnCZl4U%2FmS8b%2BkiuGco%2FMyieurN5zIG"}

# 创建请求对象
req = urllib.request.Request(url, headers=headers)

# 获取响应对象
res = urllib.request.urlopen(req)
html = res.read().decode("utf-8")


# 写入本地文件
with open("搜索.html", "w", encoding="utf-8") as f:
      f.write(html)

怕你不会找cookie,这个cookie就给你了。反正这是一个游客cookie

5年前 评论
OlafChou (楼主) 5年前
OlafChou (楼主) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前
OlafChou (楼主) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前
讨论数量: 4

爬取搜索引擎?很明显,百度搜索查出来了你是机器人。我之前弄过百度搜索和百度翻译,基本上百度的网站都是cookie验证而不是user-agent认证的。所以说,user-agent其实不用加的,但是cookie必须要加。否则,百度会判断你是机器人并给你个安全验证。
参考代码:

import urllib.request
import urllib.parse

# 拼接URL
basedurl = "http://baidu.com/s?"
key = input("请输入要搜索的内容:")

# 进行urlencode()编码
wd = {"wd": key}
key = urllib.parse.urlencode(wd)

url = basedurl + key
headers = {"Cookie": "BAIDUID=F38AC2419CF0AC3B3A3DB41595EB6F9F:FG=1; BIDUPSID=F38AC2419CF0AC3B3A3DB41595EB6F9F; PSTM=1585882998; BD_UPN=12314353; yjs_js_security_passport=2413cfeabab8c429a825972715f9d67519fdc472_1586848693_js; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; sugstore=0; delPer=0; BD_CK_SAM=1; PSINO=6; H_PS_PSSID=30970_1425_21096_31186_31229_30824_31164_22157; H_PS_645EC=9c74rZPiR3LwXxmfeU8X%2BBOX16mULH1FiPiE%2BjnCZl4U%2FmS8b%2BkiuGco%2FMyieurN5zIG"}

# 创建请求对象
req = urllib.request.Request(url, headers=headers)

# 获取响应对象
res = urllib.request.urlopen(req)
html = res.read().decode("utf-8")


# 写入本地文件
with open("搜索.html", "w", encoding="utf-8") as f:
      f.write(html)

怕你不会找cookie,这个cookie就给你了。反正这是一个游客cookie

5年前 评论
OlafChou (楼主) 5年前
OlafChou (楼主) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前
OlafChou (楼主) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前
Coolest (作者) 5年前

你的 headers 要添加 Accept,User-Agent 换成自己浏览器的或者其他的,我试过你这个UA不行

5年前 评论
Jason990420

可以的, 我可以下到网页, 再打开也OK ! :+1:

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!