网络爬虫技术从入门到精通(渗透高端操作)第一章

424次阅读
没有评论

爬虫的简单定义:

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

下面我们来看网络爬虫框架,我先带大家入门,做一些简单的东西,并在实例中为大家讲述。 爬虫的分类:

1:通用网络爬虫
它的爬取范围和爬取数据较大,对于爬取的速度和存储空间要求比较高,她在爬取页面的顺序上效率比较低,需要好长时间才能刷新一回页面,这种爬虫的应用在大型搜索引擎中。
2:聚焦网络爬虫
这种爬虫比较有选择性,又叫主题网络爬虫,主要是爬取特定的信息,所以爬取速度比较快,保存页面的速度比较快。
3:增量式网络爬虫
所谓增量式网络爬虫,只会在需要的时候爬取新产生的页面,对于没有变化的页面就不会爬取,这种爬虫在时间和空间上降低了损耗,但在算法的问题上有一定的难度。
4:深度网络爬虫
这种爬虫就比较复杂了,主要有一些功能模块组成,在后面我会讲。

我们来看网络爬虫基本原理

网络爬虫技术从入门到精通(渗透高端操作)第一章
说明:
1 :获取初始的URL,这是用户指明要爬取的网页
2 :在爬取对应的URL和网页时,获取新的URL
3 :将新的URL放入URL队列中
4 :从URL队列中读取新的URL,然后根据新的URL爬取网页,同时从新的URL获取新的URL,重复过程
5 :最后是我们设置的终止条件,如果没有终止条件,爬虫会一直进行下去
网络爬虫的常用技术

1:python的网络请求
我们来看实现HTTP网络常见请求
urllib模块的使用
上代码:

""" designer : 蒋光道 function : 简单网络爬虫,访问网页 version : 1.0 date : 08/08/2020 """ import urllib.request reponse = urllib.request.urlopen("http://www.fishc.com")#访问网页 html = reponse.read()#读取网页代码 html=html.decode("utf-8") # 设置编码 print(html)# 打印读取内容

我们来看代码测试,可以看到以下结果
网络爬虫技术从入门到精通(渗透高端操作)第一章
下面我们实现一个例子,爬取网页图片,并写入我们的文件中。
我们来看这个网址,这是专为爱猫人士定制的网站,我们来爬取自己喜爱的图片
网络爬虫技术从入门到精通(渗透高端操作)第一章

这里注意,实现特别简单,上代码:

""" designer : 蒋光道 function : 简单网络爬虫,下载一只猫 version : 2.0 date : 08/08/2020 """ import urllib.request # 导入模块 reponse = urllib.request.urlopen("http://placekitten.com/g/500/600") # 请求

cat_image = reponse.read()

with open("cat_image.jpg",'wb') as f :

f.write(cat_image)

这里我们注意/500/600这里设置参数是为了设置猫图的尺寸,修改参数会得到不同的结果
我们来看运行的结果: 这是我得到的结果;

网络爬虫技术从入门到精通(渗透高端操作)第一章
这里我没有设置具体文件的路径,那么爬取的图片会默认保存在这里:我用pycharm写的同级目录下,当然你可以设置指定的路径。
网络爬虫技术从入门到精通(渗透高端操作)第一章
urllib3模块的使用

import urllib3 #创建PoolManager对象,用于处理线程池的连接及线程安全的所有细节 http = urllib3.PoolManager() #对需要爬取的网页发送请求 response = http.request('GET','https://www.baidu.com') print(response.data) 我们来看运行结果 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200814110647670.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pnZGFiYw==,size_16,color_FFFFFF,t_70#pic_center)

另外,代码也可以这样

import urllib3 #创建PoolManager对象,用于处理线程池的连接及线程安全的所有细节 http = urllib3.PoolManager() #对需要爬取的网页发送请求 response = http.request('POST','http://httpbin.org/post',fields={'word':'hello'}) print(response.data)

我们来看运行结果
网络爬虫技术从入门到精通(渗透高端操作)第一章

这里我们再看一下这个
我们还是来爬取猫咪,上代码:

""" designer : 蒋光道 function : 简单网络爬虫,下载一只猫(另一种方式) version : 3.0 date : 08/08/2020 """ import urllib.request head = {}#我们这里多了一个head,里面的内容存放相当于模拟一个浏览器,这样的好处是什么呢,就是为了伪装,防止网站拒绝爬虫程序的访问

head["User=Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36" rep = urllib.request.Request("http://placekitten.com/g/800/1000",headers=head) reponse = urllib.request.urlopen(rep) cat_im = reponse.read() with open("D:\\猫咪.jpg","ab") as f : f.write(cat_im) ``` 我们来看运行结果:(注意:我这回是写入d盘的) 结果在这里 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200814112526733.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pnZGFiYw==,size_16,color_FFFFFF,t_70#pic_center) <font color ='red' size = 4>requests模块的使用 上代码

import requests
reponse = requests.get(‘http://www.baidu.com’)
print(reponse.status_code) # 打印状态码
print(reponse.url) # 打印请求的URL
print(reponse.headers) # 打印头部信息
print(reponse.cookies) # 打印Cookies信息
print(reponse.text) # 以文本形式打印网页源码
print(reponse.content) # 以字节流形式打印网页源码

我们来看运行结果
网络爬虫技术从入门到精通(渗透高端操作)第一章
其实这里我们还有许多东西要讲,比如状态码这些。以及cookies的说明,内容涉及比较多。
欢迎猿友们指点留言,我的爬虫文章将继续推出,下一次文章我们来看爬虫的一个强大框架scrapy框架,以及介绍一些更重要的东西。欢迎大家持续关注。

注:写了一上午,

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计3153字。
新手QQ群:570568346,欢迎进群讨论 Python51学习