Python爬虫 | requests库和User Agent

时间:2024-05-19 08:25:05

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

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

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

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

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

Python爬虫 | requests库和User Agent

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

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

当然,有时候也会这样:

Python爬虫 | requests库和User Agent

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

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

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

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

Python爬虫 | requests库和User Agent

F12检查元素。

Python爬虫 | requests库和User Agent

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

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

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

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

运行。

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

Python爬虫 | requests库和User Agent

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

运行。

Python爬虫 | requests库和User Agent

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

你学会了吗?