什么是网络爬虫
网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。
优先申明:我们使用的python编译环境为PyCharm
一、首先一个网络爬虫的组成结构:
爬虫调度程序(程序的入口,用于启动整个程序)
url管理器(用于管理未爬取得url及已经爬取过的url)
网页下载器(用于下载网页内容用于分析)
网页解析器(用于解析下载的网页,获取新的url和所需内容)
网页输出器(用于把获取到的内容以文件的形式输出)
二、编写网络爬虫
(1)准备所需库
我们需要准备一款名为BeautifulSoup(网页解析)的开源库,用于对下载的网页进行解析,我们是用的是PyCharm编译环境所以可以直接下载该开源库。
在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料
步骤如下:
选择File->Settings
![1240](https://upload-images.jianshu.io/upload_images/12900126-1239bddcffcdf8c4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
打开Project:PythonProject下的Project interpreter
![1240](https://upload-images.jianshu.io/upload_images/12900126-423188b4db2f37c9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
点击加号添加新的库
![1240](https://upload-images.jianshu.io/upload_images/12900126-c469d581575d974b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
输入bs4选择bs4点击Install Packge进行下载
![1240](https://upload-images.jianshu.io/upload_images/12900126-6fe49d2319d54abf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
(2)编写爬虫调度程序
这里的bike_spider是项目名称引入的四个类分别对应下面的四段代码url管理器,url下载器,url解析器,url输出器。
![1240](https://upload-images.jianshu.io/upload_images/12900126-7772ea6f72da4e2e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
![1240](https://upload-images.jianshu.io/upload_images/12900126-17a26ecf83d37abd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
(3)编写url管理器
我们把已经爬取过的url和未爬取的url分开存放以便我们不会重复爬取某些已经爬取过的网页。
![1240](https://upload-images.jianshu.io/upload_images/12900126-121cbba35fe68f37.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
(4)编写网页下载器
通过网络请求来下载页面
![1240](https://upload-images.jianshu.io/upload_images/12900126-9e79433f8b56bb62.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
(5)编写网页解析器
对网页进行解析时我们需要知道我们要查询的内容都有哪些特征,我们可以打开一个网页点击右键审查元素来了解我们所查内容的共同之处。
![1240](https://upload-images.jianshu.io/upload_images/12900126-22170698f1606b0f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
![1240](https://upload-images.jianshu.io/upload_images/12900126-f2fd446be7b06363.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
(6)编写网页输出器
输出的格式有很多种,我们选择以html的形式输出,这样我们可以的到一个html页面。
![1240](https://upload-images.jianshu.io/upload_images/12900126-b97dbd0f2e5e98b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
![1240](https://upload-images.jianshu.io/upload_images/12900126-d31fe7fe078de9ec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&x-oss-process=image/resize,w_1400/format,webp)
写在末尾
注意:网页经常发生变化,我们需要根据网页的变化动态修改我们的代码来获得我们所需要的内容。
这只是一个简单的网络爬虫,如果需要完善其功能我们需要考虑更多问题。