爬虫 2 构建流程、urllib库的介绍

按照爬虫的大致流程,程序的流程框架可以如下图所示:
先指定一个url;
然后通过getData函数进行网页爬取(一般是边爬取边解析,而不是爬取完之后再统一解析);
指定一个路径,通过saveData函数将解析完毕的数据保存。

在这里插入图片描述

urllib包的介绍:
1 urllib.request对象:
urllib.request.urlopen(URL字符串):

用来打开特定URL网页,并获取网页的很多信息(不仅仅是源码,还包括response header等网络信息),返回给response对象(自己命名),比如可以通过**response.getheaders()操作,获取所有headers,也可以通过response.gethead(“想要获得的属性名”)**操作,获取headers中特定的属性值;
在这里插入图片描述
在这里插入图片描述

通过**response.read().docode()**操作,可以对获取到的网页源码进行读取,并将所有中文通过utf-8解码。
在这里插入图片描述

执行结果:
在这里插入图片描述

urllib.request.Request(url=”想要访问的url”,headers=”伪造的头部headers”):
这个方法用来构造一个“更接近浏览器行为”的请求包,如果直接通过之前的**urllib.request.urlopen(URL字符串)方法来访问页面,则会被反爬虫拒绝(状态码418)。所以这里我们通过urllib.request.Request(url=”想要访问的url”,headers=”伪造的头部headers”)**方法来构造一个“专业的”请求包,让服务器相信我们是通过浏览器访问网页的,而不是爬虫。
代码和解释如下:

在这里插入图片描述

执行结果:(说明爬取网页成功)

在这里插入图片描述

2 urllib.parse对象:
这个对象是一个解释器,具体用法下面会说。
刚才我们通过程序获取网页信息是直接通过访问url来获取的,也就是通过get方式,但是如果网页需要用户登录才能访问信息,则需要通过post方式进行访问,post需要提交一个表单,一般来说就是用户名+密码。这里我们用一个专门用来测试的网站httpbin.org来测试。
具体每行代码的作用在下图中已经注释了。
在这里插入图片描述

执行结果(部分):‘
在这里插入图片描述

这里看到,我们的User-Agent部分写的是python,这就是直接告诉服务器:“我们不是浏览器,我就是来爬虫的!”,如果要爬取的网站有反爬虫防御,那这个就爬不了了。
在这里插入图片描述

这个是通过浏览器访问网页的User-Agent:
在这里插入图片描述

如果想考虑访问页面超时的情况,我们也可以通过python实现:
这里的timeout=0.01表示,如果程序向服务器发送请求后,0.01秒还没有得到回应,那么就认为是访问超时,报错。(所以我们需要通过try语句来处理这些异常)
在这里插入图片描述

总结(最基础的爬取网页流程):
1. 确定想要爬取的url
2. 伪造headers(暂时只需要User-Agent参数,通过浏览器访问想要爬取的url->f12->Network->Headers->User-Agent复制得到)
3. req=urllib.request.Request(url=url, headers=headers)封装请求包req
4. response = urllib.request.urlopen(req),将请求包发送到网站,得到网页信息response
5. print(response.read().decode(“utf-8”))读取网页源码等信息

代码如下图所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值