爬虫小白——利用pycharm爬取网页内容

1,424次阅读
没有评论

概述:

这是一个利用pycharm在phthon环境下做的一个简单爬虫分享,主要通过对豆瓣音乐top250的歌名、作者(专辑)的爬取来分析爬虫原理

什么是爬虫?

我们要学会爬虫,首先要知道什么是爬虫。

网络爬虫(又被称为网页 蜘蛛,网络机器人,在 FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取 万维网信息的程序或者脚本。另外一些不常使用的名字还有 ipipgo、自动索引、模拟程序或者 蠕虫。

中文名

网络爬虫

外文名

web crawler

别    称

网络蜘蛛

目    的

按要求获取 万维网信息


网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。


准备工作:

我们使用的是pycharm,关于pycharm的安装及使用可以参考https://blog.csdn.net/yanyangjie/article/details/78259561

使用工具:requests , lxml  ,xpath

关于requests的使用可以去看它的官方文档: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

个人觉得用lxml来解析网页是最快的,关于lxml的使用,可以看这个: http://yifei.me/note/464

xpath是一门在xml文档中查找信息的语言。 xpath可用来在xml文档中对元素和属性进行遍历。xpath的使用可以参考他的教程:

http://www.w3school.com.cn/xpath/index.asp

话不多说,开始我们的爬虫之旅

首先找到我们的目标url:https://music.douban.com/top250?start=0

可以看到我们要获取的歌名、作者(专辑)在页面中有十页,每页十行

爬虫小白——利用pycharm爬取网页内容

于是我们可以利用for循环来获取目标:

爬虫小白——利用pycharm爬取网页内容

然后用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)

接下来就可以提取我们想要的数据了

爬虫小白——利用pycharm爬取网页内容

最后把获取到的数据保存到我们想要放的地方就可以了

爬虫小白——利用pycharm爬取网页内容

到了这里,我们基本上完成了,完整代码如下:

爬虫小白——利用pycharm爬取网页内容

然后来看看我们爬取的成果

爬虫小白——利用pycharm爬取网页内容

总结:

爬虫流程:

爬虫小白——利用pycharm爬取网页内容

1、发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等 

Request模块缺陷:不能执行JS 和CSS 代码

 

2、获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

 

3、解析内容

解析html数据:正则表达式(RE模块),第三方解析库如lxml,bs4等

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

 

4、保存数据

数据库(MySQL,Mongdb、Redis)

文件

总而言之,爬虫的流程就是爬取——解析——存储

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

相关文章:

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