Hello,大家好,相信很多人都对爬虫有着浓厚的兴趣,今天我来为大家简单的讲一下什么是爬虫,并通过爬取豆瓣电影TOP250来让大家更清楚的明白爬虫的工作原理。
网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
由于python语法简单简洁,第三方模块比较丰富,关于爬虫的网络请求模块和网络解析模块(Lxml,BeautifulSoup,pyQuery)也比较多,并且有高效稳定的scrapy网络爬虫框架,以及爬scrapy,redis分布式爬虫框架,Python也是一门胶水语言,对于其他语言的调用比较方便,所以我们在爬虫时一般使用python语言。
首先,我们要明白一个网页所具备的三大特征:
• 每一个网页都有一个唯一的url(统一资源定位符)来进行定位
• 网页都是通过HTML<超文本>文本展示的
• 所有的网页都是通过HTTP<超文本传输协议>(HTTPS)协议来传输的
然后,我们需要安装requests和BeautifulSoup4这两个库,requests是python实现的简单易用的HTTP库 ,bs4可以通过解析requests获取的网页信息为用户提供需要抓取的数据。
安装方法如下:
- 运行cmd命令提示符
- 输入
pip install requests
,等待安装完成
- 输入
pip install bs4
,等待安装完成
(若在cmd中显示不是外部或内部命令,也不是可运行的程序或批处理文件,则说明未把python设为环境变量,设置方法请点击
https://jingyan.baidu.com/article/48206aeafdcf2a216ad6b316.html
查看)
明白了这些,我们应该就有了爬取豆瓣电影TOP250的大致思路:
- 找到记载有豆瓣电影TOP250的网站
- 获取该网站的HTML信息
- 整理数据,将所需要的信息输出
好了,废话不多说,让我们进入我们的第一个爬虫项目的实战中吧!
使用谷歌打开含有我们需要的信息的网站“https://movie.douban.com/top250”
我们先把这个网站的信息使用requests库中的get函数获取出来并保存到req变量中:
1 | req = requests.get(‘https://movie.douban.com/top250’) |
然后,我们按F12打开审查元素
点击箭头所指的键,然后点击网页中我们所需要获取的信息(即肖申克的救赎)
上图中肖申克的救赎所存放的位置已经显示出来了
我们可以看到《肖申克的救赎》存放在id为hd的div标签中的a,span标签中,然后我们再通过看《霸王别姬》《阿甘正传》等发现它们的标签存放地是一样的!
这样,我们就可以把req变量中的内容使用BeautifulSoup4库解析出来存放到soup变量中:
1 | soup = bs4.BeautifulSoup(req.text,’ html.parse’) |
运行出来的结果为:
这样,第一页中所包含的前25名的电影名称就获取完成了!
当我们来到第二页时,会发现该网页的url变成了‘https://movie.douban.com/top250?start=25&filter=
’,第三页则是‘https://movie.douban.com/top250?start=50&filter=
’,再拐到第一页时,url变成了‘https://movie.douban.com/top250?start=0&filter=
’,怎么样,发现规律了吗?url有一个成25的倍数变化的数,若为75则是第四页,225则为第十页!
因此,我们可以做一个循环结构,将十页的内容全部获取出来并依次输出:
for i in range(0,250,25):
1 | for i in range(0,250,25): |
最终我们的代码如下:
好了,一个最基本的爬虫程序就这样写好啦,是不是很简单呢。当然,爬虫远不止于此,在后面我们还要讲到各种各样的反爬虫机制和不同的请求(get,post),让我们敬请期待!