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

爬虫的简单定义:

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的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)
我们来看运行结果
在这里插入图片描述
另外,代码也可以这样
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盘的) 结果在这里
在这里插入图片描述
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框架,以及介绍一些更重要的东西。欢迎大家持续关注。

注:写了一上午,原创不易,希望尊重权益,谢绝转载。(最近发现我上次的爬取有道词典的博文被知乎搬去了,本想为文章开启收费的,考虑到我们博客的共享精神,以及为广大猿友们服务的原则,我还是为大家免费推出)

猜你喜欢

转载自blog.csdn.net/jgdabc/article/details/107996657