爬虫小白——利用pycharm爬取网页内容
概述:
这是一个利用pycharm在phthon环境下做的一个简单爬虫分享,主要通过对豆瓣音乐top250的歌名、作者(专辑)的爬取来分析爬虫原理
什么是爬虫?
我们要学会爬虫,首先要知道什么是爬虫。
- 中文名
- 网络爬虫
- 外文名
- web crawler
- 别 称
- 网络蜘蛛
- 目 的
- 按要求获取万维网信息
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
准备工作:
我们使用的是pycharm,关于pycharm的安装及使用可以参考https://blog.****.net/yanyangjie/article/details/78259561
使用工具:requests , lxml ,xpath
话不多说,开始我们的爬虫之旅
首先找到我们的目标url:https://music.douban.com/top250?start=0
可以看到我们要获取的歌名、作者(专辑)在页面中有十页,每页十行
于是我们可以利用for循环来获取目标:
然后用requests请求网页:
import requests
headers = {"User_Agent": "Mozilla/5.0(compatible; MSIE 5.5; Windows 10)"}
data = requests.get(url, headers=headers).text
再用lxml解析网页:
from lxml import etree
s = etree.HTML(data)
接下来就可以提取我们想要的数据了
最后把获取到的数据保存到我们想要放的地方就可以了
到了这里,我们基本上完成了,完整代码如下:
然后来看看我们爬取的成果
总结:
爬虫流程:
1、发起请求
使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等
Request模块缺陷:不能执行JS 和CSS 代码
2、获取响应内容
如果服务器能正常响应,则会得到一个Response
Response包含:html,json,图片,视频等
3、解析内容
解析html数据:正则表达式(RE模块),第三方解析库如lxml,bs4等
解析json数据:json模块
解析二进制数据:以wb的方式写入文件
4、保存数据
数据库(MySQL,Mongdb、Redis)
文件
总而言之,爬虫的流程就是爬取——解析——存储