本文针对初学者,我会用最简单的案例告诉你如何入门爬虫!
想要入门 爬虫首先需要解决四个问题
一、你应该知道什么是爬虫?
网络爬虫,其实叫作网络数据采集更容易理解 。
就是通过编程向网络服务器请求数据(HTML表单),然后解析HTML,提取出自己想要的数据 。
归纳为四大步:
1.根据url获取HTML数据
2.解析HTML,获取目标信息
3.存储数据
4.重复第一步
这会涉及到数据库、网络服务器、HTTP协议、HTML、数据科学、网络安全、图像处理等非常多的内容 。但对于初学者而言,并不需要掌握这么多 。
二、要学习到什么程度
如果你不懂,那么需要先学习这门非常easy的语言(相对其它语言而言) 。
编程语言基础语法无非是数据类型、数据结构、运算符、逻辑结构、函数、文件IO、错误处理这些,学起来会显枯燥但并不难 。
刚开始入门爬虫,你甚至不需要去学习的类、多线程、模块之类的略难内容 。找一个面向初学者的教材或者网络教程,花个十几天功夫,就能对基础有个三四分的认识了,这时候你可以玩玩爬虫喽!
当然,前提是你必须在这十几天里认真敲代码,反复咀嚼语法逻辑,比如列表、字典、字符串、if语句、for循环等最核心的东西都得捻熟于心、于手 。
教材方面比较多选择,我个人是比较推荐官方文档以及简明教程,前者比较系统丰富、后者会更简练 。
三、为什么要懂HTML
前面说到过爬虫要爬取的数据藏在网页里面的HTML里面的数据,有点绕哈!
维基百科是这样解释HTML的
超文本标记语言(英语:age,简称:HTML)是一种用于创建网页的标准标记语言 。HTML是一种基础技术,常与CSS、一起被众多网站用于设计网页、网页应用程序以及移动应用程序的用户界面[3] 。网页浏览器可以读取HTML文件,并将其渲染成可视化网页 。HTML描述了一个网站的结构语义随着线索的呈现,使之成为一种标记语言而非编程语言 。
总结一下,HTML是一种用于创建网页的标记语言,里面嵌入了文本、图像等数据,可以被浏览器读取,并渲染成我们看到的网页样子 。
所以我们才会从先爬取HTML,再 解析数据,因为数据藏在HTML里 。
学习HTML并不难,它并不是编程语言,你只需要熟悉它的标记规则,这里大致讲一下 。
HTML标记包含标签(及其属性)、基于字符的数据类型、字符引用和实体引用等几个关键部分 。
HTML标签是最常见的,通常成对出现,比如< h1 >与< /h1 > 。
这些成对出现的标签中,第一个标签是开始标签,第二个标签是结束标签 。两个标签之间为元素的内容(文本、图像等),有些标签没有内容,为空元素,如 。
以下是一个经典的Hello World程序的例子:
This is a titleHello world!
HTML文档由嵌套的HTML元素构成 。它们用HTML标签表示,包含于尖括号中,如< p >[56]
在一般情况下,一个元素由一对标签表示:“开始标签”< p >与“结束标签”< /p > 。元素如果含有文本内容,就被放置在这些标签之间 。
四、了解网络爬虫的基本原理
在编写爬虫程序时,只需要做以下两件事:
这两件事,都有相应的库帮你去做,你只需要知道如何去用它们就可以了 。
五、用库爬取百度首页标题和图片
首先,发送HTML数据请求可以使用内置库,该库有一个函数,可以根据url获取HTML文件,这里尝试获取百度首页“”的HTML内容
# 导入urllib库的urlopen函数from urllib.request import urlopen # 发出请求,获取htmlhtml = urlopen("https://www.baidu.com/")# 获取的html内容是字节,将其转化为字符串html_text = bytes.decode(html.read())# 打印html内容print(html_text)
看看效果:
我们看一下真正百度首页html是什么样的,如果你用的是谷歌浏览器,在百度主页打开设置>更多工具>开发者工具,点击,就可以看到了:
对比一下你就会知道,刚才通过程序获取到的HTML和网页中的一样!
获取了HTML之后,接下就要解析HTML了,因为你想要的文本、图片、视频都藏在HTML里,你需要通过某种手段提取需要的数据 。
同样提供了非常多且强大的库来帮助你解析HTML,这里以著名的库为工具来解析上面已经获取的HTML 。
是第三方库,需要安装使用 。在命令行用pip安装就可以了:
pip install bs4
会将HTML内容转换成结构化内容,你只要从结构化标签里面提取数据就OK了:
比如,我想获取百度首页的标题“百度一下,我就知道”,怎么办呢?
这个标题是被两个标签套住的,一个是一级标签,另一个是二级标签,所以只要从标签中取出信息就可以了
# 导入urlopen函数from urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 请求获取HTMLhtml = urlopen("https://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 从标签head、title里提取标题title = obj.head.title# 打印标题print(title)
看看结果:
这样就搞定了,成功提取出百度首页的标题 。
如果我想要下载百度首页logo图片呢?
第一步先获取该网页所有图片标签和url,这个可以使用的方法,它可以提取包含在标签里的信息 。
一般来说,HTML里所有图片信息会在“img”标签里,所以我们通过(“img”)就可以获取到所有图片的信息了 。
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 请求获取HTMLhtml = urlopen("https://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 从标签head、title里提取标题title = obj.head.title# 使用find_all函数获取所有图片的信息pic_info = obj.find_all('img')# 分别打印每个图片的信息for i in pic_info:print(i)
【零基础如何入门 Python 爬虫?】看看结果:
打印出了所有图片的属性,包括class(元素类名)、src(链接地址)、长宽高等 。
其中有百度首页logo的图片,该图片的class(元素类名)是index-logo-src 。
文章插图
,
文章插图
]
可以看到图片的链接地址在src这个属性里,我们要获取图片链接地址:
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 请求获取HTMLhtml = urlopen("https://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 从标签head、title里提取标题title = obj.head.title# 只提取logo图片的信息logo_pic_info = obj.find_all('img',class_="index-logo-src")# 提取logo图片的链接logo_url = "https:"+logo_pic_info[0]['src']# 打印链接print(logo_url)
结果:
获取地址后,就可以用.函数下载logo图片了
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 导入urlretrieve函数,用于下载图片from urllib.request import urlretrieve# 请求获取HTMLhtml = urlopen("https://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 从标签head、title里提取标题title = obj.head.title# 只提取logo图片的信息logo_pic_info = obj.find_all('img',class_="index-logo-src")# 提取logo图片的链接logo_url = "https:"+logo_pic_info[0]['src']# 使用urlretrieve下载图片urlretrieve(logo_url, 'logo.png')
最终图片保存在’logo.png’
六、结语
本文用爬取百度首页标题和logo图片的案例,讲解了爬虫的基本原理以及相关库的使用,这是比较初级的爬虫知识,还有很多优秀的爬虫库和框架等待后续去学习 。
当然,掌握本文讲的知识点,你就已经入门爬虫了 。加油吧,少年!
关于技术储备
学好不论是就业还是做副业赚钱都不错,但要学会还是要有一个学习规划 。最后大家分享一份全套的学习资料,给那些想学习的小伙伴们一点帮助!
一、所有方向的学习路线
所有方向路线就是把常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面 。
二、学习软件
工欲善其事必先利其器 。学习常用的开发软件都在这里了,给大家节省了很多时间 。
三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了 。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习 。
五、面试资料
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作 。
这份完整版的全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪↓
- 银发经济崭露头角:海外网红营销如何助力假发品牌增长
- 【求问帖】软件开发遭遇什么困境?如何从“普罗克鲁斯特斯之床”逃脱?
- 桌面虚拟现实系统是一种以计算机为基础,基于虚拟现实技术的挖掘机模拟操作.pdf
- 股票是不是零和游戏? 以及进化论在股票中的思想
- Java基础50道高频考点面试题,精选汇总,值得收藏
- 如何摆脱从业迷茫?李轶楠为“数据库人”职业生涯指点迷津
- 华帝蒸汽清洗好还是自动洗好_如何获得更好的蒸汽价格警报
- 5G时代,银发族如何跨越数字鸿沟?
- 入手评测 Pico Neo 3 256G先锋版和128G基础版的区别
- 亚马逊和速卖通店铺要如何规划?4个观念成为人气爆棚的店铺