python爬虫学习笔记(二)

8 篇文章 0 订阅
3 篇文章 0 订阅

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

我们怎么来伪装呢?要执行更复杂的操作,我们需要给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)),不然容易出错,毕竟你不可能记住所有参数的顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值