Python爬虫 | requests库和User Agent

本文介绍了如何使用Python的requests库和User Agent来规避一些简单的反爬虫机制。通过理解HTTP请求过程,学习如何查看及设置User Agent,以成功抓取带有反爬虫机制的网页源代码。

回复爬虫来获取本篇文章的源代码。

在上一篇文章中,我们学习了爬取一些简单的网页。当然,有爬虫就有反爬虫。像第一篇文章中,我们试图爬取百度主页就只得到了一点信息。今天我们来学习绕过一些简单的反爬虫机制。

首先我们了解一下你是怎么上网的。

首先,你会输入一个网址让浏览器访问。网址其实本身是没有任何意义的,只是为了让人们更好记忆,浏览器也并不对网址感兴趣,它只会根据IP地址来访问网页。

浏览器会在你访问过的网页中寻找网址对应的IP地址,如果没有找到,就是说你没有访问过这个网页的话,它就去询问DNS。DNS的全称是域名服务器,是专门用于管理网址对应的IP地址的。它类似于接线员,把浏览器接到IP地址对应的计算机。(服务器。其实服务器就是配置比普通计算机高的计算机)当然,如果你访问的界面根本就不存在,DNS就返回一个Http404错误,它在你访问不存在的网页时出现。接着,浏览器会给服务器发一个东西,叫做Http响应报文,用于请求你访问这个网页。这里面大概是这样的:

你可以在检查元素中的网络部分找到它。

如果服务器同意你访问,你就可以开始访问这个网页了。

当然,有时候也会这样:

这种问题可能是由于服务器已经崩溃了,从而没有人允许你访问这个网页。(在Django网页的开发过程中就经常遇到,多半是你写的代码出问题了)

我们回到整篇文章的主题:“爬虫”。问题是,爬虫给网页发送包的时候很可能没有发送完整。这不是你代码写的问题,而是你并没有让它发送。这个时候就只能祈祷这个网页的反爬虫机制不完善吗?不是的。你可以手动给它传包的内容。今天我们说User Agent,就是用户代理。

这个东西是你的浏览器本来就有的,里面是关于浏览器以及你计算机的一些信息。有两种方式获取这个,一个是使用Google浏览器有一个显示版本的网页,里面就有。一种是使用检查元素。

我们随便使用浏览器打开一个网页,例如百度首页。

F12检查元素。

或许你的不是这样的,不过没关系。

我们根据它说的按下Ctrl+R键开始。

好多啊。这里大多是一些图片,是由服务器传给浏览器的。

里面有General、Response Headers以及Request Header和Query String Parameters。我们看Requests Headers,也就是请求头。

注意最后一行User-Agent,里面就是用户代理。我们打开PyCharm,把它复制进去。

这是谷歌浏览器根据你的计算机自动生成的。我们将它储存在一个名为headers的变量中,然后再使用。

在此之前,由于百度贴吧没有反爬机制,我们使用百度首页试一试。也就是说我们重新开始。在小爬虫目录下新建version2.0,这是我们第二个版本。

今天我们使用另一个用于Python爬虫的Python库,叫做requests。它并不是自带的,所以我们首先要使用pip来安装它。打开一个终端窗口,输入pip install requests

这是我已经安装完了的样子。这个Python库的语法和urllib差不多,是这个样子的。

这是我们source函数,我们并没有加入User Agent。先使用百度贴吧测试一下。

运行。

还是可以的。但如果是有反爬机制的百度主页呢?

一个主页的源代码不可能只有这么一点。我们加入User Agent试试。

注意这里的User Agent应该是字典类型而不是字符串。

运行。

太好了!我们使用User Agent成功抓取到了百度首页的源代码。接下来,我们就可以分析一些反爬虫机制比较弱的网页了。

你学会了吗?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值