上一节我们讲解如何抓取网页和下载图片,在下一节里面我们会讲解如何抓取有限制抓取的网站
首先,我们依然用我们上一节课的方法去抓取一个大家都用来举例的网站<blog.cndn.net>,本文主要分以下几个部分:

1.抓取受限网页
2.对代码进行一些优化

1.抓取受限网页

首先使用我们上一节学到的知识测试一下:

此处我们的输出为403,代表拒绝访问;同理200表示请求成功完成;404表示网址未找到.
可见csdn已做了相关屏蔽,通过第一节的方法是无法获取网页,在这里我们需要启动一个新的库:urllib2
但是我们也看到浏览器可以发那个文,是不是我们模拟浏览器操作,就可以获取网页信息.
老办法,我们先来看看浏览器是如何提交请求给csdn服务器的.首先简述一下方法:

打开网页,右键点击,选择"inspect Element"(最下面这一项)
点击下面弹起来的框框的Network选项卡
刷新网页,就可以看到Network选项卡抓取了很多信息
找到其中一个信息展开,就能看到请求包的Header

Python爬虫基础2–urllib2-Python 技术分享 Java技术分享 Python 爬虫技术_微信公众号:zeropython—昊天博客

header 头部信息

然后根据提取的Header信息,利用urllib2的Request方法模拟浏览器向服务器提交请求,代码如下:

呵呵,你限制我,我就跳过你的限制.据说只要浏览器能够访问的,就能够通过爬虫抓取.

2.对代码进行一些优化

简化提交Header方法

发现每次写那么多req.add_header对自己来说是一种折磨,有没有什么方法可以只要复制过来就使用.答案是肯定的.

通过观察,我们发现headers={},就是说可以以字典的方式提交header信息.那就动手试试咯!!

发现是不是很简单,在这里感谢斯巴达的无私赐教.

提供动态头部信息

如果按照上述方法进行抓取,很多时候会因为提交信息过于单一,被服务器认为是机器爬虫进行拒绝.
那我们是不是有一些更为智能的方法提交一些动态的数据,答案肯定也是肯定的.而且很简单,直接上代码!

其实很简单,这样我们就完成了对代码的一些优化.
这一节我们主要讲了如图抓取受限制网站,下一节将会介绍爬虫神兵利器BeautifulSoup.




HTTPX 基础教程-新乡seo|网站优化,网站建设_微信公众号:zeropython—昊天博客