在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与。其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧!
工具安装
首先需要安装Python的requests和BeautifulSoup库。我们用Requests库用抓取网页的内容,使用BeautifulSoup库来从网页中提取数据。
安装python
运行pip install requests
运行pip install BeautifulSoup
抓取网页
完成必要工具安装后,我们正式开始编写我们的爬虫。我们的第一个任务是要抓取所有豆瓣上的图书信息。我们以https://book.douban.com/subject/26986954/为例,首先看看开如何抓取网页的内容。
提取内容
抓取到网页的内容后,我们要做的就是提取出我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先我们导入BeautifulSoup库,使用BeautifulSoup我们可以非常简单的提取网页的特定内容。
连续抓取网页
到目前为止,我们已经可以抓取单个网页的内容了,现在让我们看看如何抓取整个网站的内容。我们知道网页之间是通过超链接互相连接在一起的,通过链接我们可以访问整个网络。所以我们可以从每个页面提取出包含指向其它网页的链接,然后重复的对新链接进行抓取。
准备
IDE:pyCharm
库:requests、lxm
大概介绍一下,这俩库主要为我们做什么服务的
requests:获取网页源代码
lxml:得到网页源代码中的指定数据
言简意赅有没有 ^_^
搭建环境
这里的搭建环境,可不是搭建python的开发环境,这里的搭建环境是指,我们使用pycharm新建一个python项目,然后弄好requests和lxml 新建一个项目,光溜溜的啥也没有,新建个src文件夹再在里面直接新建一个Test.py吧 。
依赖库导入
在Test.py中输入:
import requests
这个时候,requests会报红线,这时候,我们将光标对准requests,按快捷键:alt + enter,pycharm会给出解决之道,这时候,选择install package requests,pycharm就会自动为我们安装了,我们只需要稍等片刻,这个库就安装好了。lxml的安装方式同理.
将这两个库安装完毕后,编译器就不会报红线了。
取网页源代码
requests可以很方便的让我们得到网页的源代码。
获取源码:
# 获取源码
html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")
# 打印源码
print html.text
代码就是这么简单,这个html.text便是这个 URL的源码
获取指定数据
现在我们已经得到网页源码了,这时就需要用到lxml来来筛选出我们所需要的信息
首先我们需要分析一下源码,我这里使用的是chrome浏览器,所以右键检查。
然后在源代码中,定位找到第一篇 。
首先点击源码页右上角的箭头,然后在网页内容中选中文章标题,这个时候,源码会定位到标题这里,
这时候选中源码的标题元素,右键复制。
得到xpath,它相当于地址。比如网页某长图片在源码中的位置。
表达式://*[@id="mainBox"]/main/div[2]/div[1]/h4/a
首先,//表示根节点,也就是说啊,这//后面的东西为根,则说明只有一个啊。我们需要的东西,在这里面。
然后/表示往下层寻找,根据图片,也显而易见,div -> main -> div[2] -> div[1] -> h4 -> a
追踪到a这里,然后我们在后面加个/text,表示要把元素的内容提取出来,所以我们最终的表达式长这样:
//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()
这个表达式只针对这个网页的这个元素,不难理解吧?
那么这个东西怎么用呢?
所有代码:
import requests
from lxml import etree
html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")
# print html.text
etree_html = etree. HTML(html.text)
content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')
for each in content:
print(each)
这时候,each里面的数据就是我们想要得到的数据了
打印结果:
如何撸一个ArrayList
打印结果却是这个结果,我们把换行和空格去掉
import requests
from lxml import etree
html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")
# print html.text
etree_html = etree.HTML(html.text)
content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')
for each in content:
replace = each.replace('\n', '').replace(' ', '')
if replace == '\n' or replace == '':
continue
else:
print(replace)
打印结果:
如何撸一个ArrayList
用到了requests获取网页列表,用lxml筛选数据,可以看出python用来在网页上爬取数据确实方便不少,chrome也支持直接在源码中得到表达式xpath,这两个库的内容肯定不止这一点点,还有很多功能等着大家去挖掘。
以上就是“如何使用Python爬虫抓取数据”的详细讲解,大家都听懂了吗?
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
python为什么叫爬虫?为什么python开发会突然火起来?
python的脚本特性,python易于配置,对字符的处理也非常灵活,加上python有丰富的网络抓取模块,所以两者经常联系在一起。Python抓取网页文档的接口更简洁;相比于其他动态脚本语言,Python的urllib2包提供了较为完整的访问网页文档的API。
15248
2019-06-10 15:11:35
Python开发 Python爬虫
学会Python爬虫能赚大钱吗?Python爬虫赚钱渠道分享
学会Python爬虫能赚大钱么?首先大家要明白这个只是作为一个技术兼职,赚点外快,肯定不比程序员全职工作的工资高。其次赚的多少还要看大家赚钱的渠道。下面小编就和大家分享一下,Python爬虫赚钱渠道,希望对大家有所帮助。
12110
2019-08-26 11:34:54
Python爬虫 实战项目
如何用Django框架搭建博客系统?
Django目前已经成为Web开发者的首选框架, 作为一款开放源代码的PythonWeb 应用框架,Django采用了MVT 软件设计模式。使用Django架构,我们不需要多少代码就可以写出一个完整的应用程序。那么,如何用Django框架搭建博客系统呢?下面将为大家分享一个实战教程,手把手从零开始教大家如何搭建博客系统。
3702
2020-06-18 14:58:27
Python教程 实战项目
如何用Python导出测试数据?
如何用Python导出测试数据?在给领导汇报测试结果时,是不可能用代码进行演示的,所以需要将结果数据导出并将进行图表化。本文将详细的讲解如何把测试结果数据单纯地导出到 Excel 中。如果你感兴趣就一起来看看吧~
5037
2020-08-03 16:40:33
Python学习 实战项目
新手入门如何学习Flask框架
学习Python的同学都知道Python常用的三大框架是Flask、Django、Tornado。本篇文章我们就来了解一下如何学习Flask框架。
4448
2020-08-24 11:57:59
Python教程 Python框架 实战项目
- 数据分析师的实践手册
- Python多任务并发编程
- 数据分析进阶技能:Pandas
推荐课程
热门文章
- 前端是什么
- 前端开发的工作职责
- 前端开发需要会什么?先掌握这三大核心关键技术
- 前端开发的工作方向有哪些?
- 简历加分-4步写出HR想要的简历
- 程序员如何突击面试?两大招带你拿下面试官
- 程序员面试技巧
- 架构师的厉害之处竟然是这……
- 架构师书籍推荐
- 懂了这些,才能成为架构师 查看更多
- UI培训机构
- 搜索引擎算法
- Linux基础
- Python培训
- PM入门
- 软件测试工程师
- 前端框架
- PHP程序员
- 职业技能
- 社群运营
- 影视制作培训
- 软件测试面试题
热门标签
扫描二维码,了解更多信息