Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

实例一、爬取京东商品信息

这里我们用到如下的爬取框架:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

即可爬取京东商品页面的网页文本,url中的链接即为京东的某个商品信息。

 

实例二、爬取亚马逊商品信息

都是爬取商品信息,为什么要将二者分开,因为亚马逊对爬虫进行了一定的限制,前面说到,网站限制爬虫有两种方式,最常见的是发布robots协议,可还有一种方式是根据HTTP请求的头部信息对爬虫进行筛选,这里亚马逊就采用了此种方式,当我们运行如下代码时:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

返回的状态码是503,此时查看HTTP请求的头部信息如下:

print(r.request.headers)

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

可以发现此时头部信息中的User-Agent所对应的值为“python-requests/2.23.0”,当亚马逊服务器经过来源审查后就会拒绝访问。

此时我们可以通过前面所学知识对User-Agent进行修改,从而模仿一个浏览器进行访问。

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

利用上面代码对头部信息的User-Agent域进行修改后,再进行访问,此时返回的状态码则为200,说明访问成功。

最终的爬取框架为:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

 

实例三、百度360搜索关键词提交(practice_2)

需要实现的目标:用爬虫程序向搜索引擎提交关键词并返回搜索结果。

首先需要知道的是百度和360都为我们提供了搜索引擎关键词的提交接口

百度关键词接口为:

http://www.baidu.com/s?wd=keyword

360的关键词接口为:

http://www.so.com/s?q=keyword

在这两个接口中,我们只要替换关键词keyword就可以向搜索引擎提交关键词了。

对Request库来讲,我们只要构建相应的url就可以利用搜索引擎实现对关键词的提取。

 

由前面所学内容可知,可利用request方法中的参数params向url中添加参数,即通过如下代码就可以实现向url添加参数。

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

最终的 r.request.url 应该是

http://www.baidu.com/s?wd=python

但是实际操作下来返回的url并不是和上面一样,会在下方给出说明和解决方法。

最终我们向百度搜索引擎提交关键词的框架为

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

此时返回打印的url才是我们所期待的url。

len(r.text)可以大致估算返回的内容的大小。

 

实例四、网络图片的爬取和存储(practice_3)

 

首先了解网络图片的格式,基本如下:

http://www.example.com/picture.jpg

这是一个文件,我们要做的就是爬取并保存这个文件。

思路是这样的,首先需要指定一个文件在本地保存的路径,随后将图片内容写入这个路径,具体代码如下:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

其中用到了open语句,并指定了open模式为wb模式,即以二进制格式创建/写入一个文件。

r.content中保存着的返回内容的二进制形式。with为关键字,用于文件管理。

通过上述代码,就可以将url对应的图片保存到本地的指定路径。

随后我们给出图片爬取全代码:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

通过上述框架,我们不仅可以获取图片,也可以获取视频、动画之类以二进制形式存储的网络资源。

 

 

实例五、IP地址归属地的自动查询(practice_4)

当我们需要查询IP地址的归属地时,有一个网站可以帮助我们,网站的url为:

http://m.ip138.com

此网站IP地址归属的查询接口是:

http://m.ip138.com/ip.asp?ip=ipadress

只要将ipadress替换成我们要查询的IP地址,即可查询到IP地址的归属地信息。

用Request库实现这个IP地址归属地查询:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

因为网站服务器进行了来源审查,我们需要对请求的头部信息进行相应的修改,运行上述代码,即可得到含有IP地址归属地的信息。

下面IP地址查询的代码框架:

Python网络爬虫入门版笔记 四、一些简单爬虫的基本演示与实战

通过上述代码,只要给定ipadress就可以爬取IP地址归属地的相关信息了。

这个例子与前面的相比,并没有多大的差异,但是主要是想通过这个例子说明一些道理,当我们在一些网站上进行一些人机交互时,比如向文本框输入内容,点击按钮…其实这些在网页上产生的活动在向后台服务器提交时实际上都是以链接的形式向服务器发送、提交信息,只要我们能够获悉,这些链接的形式,即网站后台的接口(API)就可以通过程序模拟向服务器进行提交,从而获取信息。