python爬虫学习笔记(二)

a 夏天 提交于 2020-03-04 06:17:34

上一篇介绍了爬虫的基本用法,用来简单的爬取了一个网站,我们直接用网址就访问了一个网站,但这样是很不好的,有的网站这样也进不去,打个比方,就像我们知道某个人的家庭住址,我们想找她的时候直接就闯了进去,也没说我们是谁,也没和他说我们要来找他,这样可以吗?当然不行!所以我们访问网站时还应该把我们伪装一下,伪装成一个浏览器,这样我们就算是个正常用户了。

我们怎么来伪装呢?要执行更复杂的操作,我们需要给urlopen传入一个requst对象而不是一个简单的网址,

import urllib.request     #引入库

req=urllib.request.Request("https://www.baidu.cn")   #创建request对象

response=urllib.request.urlopen(req)             #访问网页

text=response.read().decode()                  #解码

print(text)

而要实现我们伪装成浏览器的目的,我们还需要给request对象一个User-Agent的报头,这个User-Agent,是每个浏览器都有的一个东西,你可以按F12,在开发者工具的network里找到。

再说request对象,他可以接收多个参数

url(网址),
data(用来传递post参数,默认空),
header(是一个字典,包含了需要发送的HTTP报头的键值对,默认空,一些我们要改动的就是这部分)。

我们可以找一个user-agent试试,打开浏览器,随便打开一个网页,在开发者工具(可以F12,QQ浏览器这样好像不行,或者右键,检查)里,找到network,往下找找能看见一个user-agent

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36

这是一份完整的代码:

import urllib.request

import ssl

ssl._create_default_https_context = ssl._create_unverified_context
#引入了ssl模块,用于取消代理
user="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"

req=urllib.request.Request("https://www.baidu.com",headers={"User-Agent":user})

response=urllib.request.urlopen(req)

text=response.read().decode()

print(text)

Ps:在传参数的时候推荐使用关键参数传参(即写出参数的名字,如Request(url=‘XXX’,headers=XXX)),不然容易出错,毕竟你不可能记住所有参数的顺序

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!