一、为啥学爬虫?
看到一个帖子,有人用python爬虫在京东抢口罩,实现实时监测、实时抢购。
可以说很调皮了~
这是爬虫在电商领域的一个小运用,除此之外你还能利用爬虫进行:商品抓取、价格监控、评论抓取、竞品剖析、动态定价等等。

其他领域,你可以利用爬虫做:房源监控剖析、网络舆情监测、精准客户获取、新闻资讯筛选、地信数据抓取、金融股票剖析等等。
这些对付从事干系行业的剖析职员还是很有学习意义的。
当然你还可以用爬虫搞一下骚操作:知乎妹子高清图片、言情小说、b站学习视频、豆瓣电影书本、抖音美女视频......这些都可以爬下来收藏。[逃
之前一贯很火的用python登录12306抢票,也是爬虫的精品,不过现在越来越难了,各种反爬设置。大家有兴趣可以去github上看一下这个项目开源代码。
学爬虫当然离不开python,以是这10天你还能get python编程,当今最火的AI编程措辞。
当然你也可以用集成好的第三方软件来爬,像八爪鱼、后羿之类的,但我还是建议用python来写爬虫,能学到更多东西。
二、什么是爬虫?爬虫是一个形象的叫法,网络爬虫实在是网络数据采集,针对性地用代码实现网络上各种数据(笔墨、图片、视频)的抓取。我们熟知的谷歌、百度等搜索引擎,也是利用的爬虫技能。
普通点说,爬虫就像是一个穿梭于网络天下的智能蜘蛛,你给它一个网址(url),然后设定规则,它就能打破重重险阻,把你想要的数据抓取下来,然后保存。
能实现爬虫的措辞有很多,像Java、PHP、Python、C#...都可以用各种办法达到你的哀求,那为什么要用python呢?
人生苦短,python当歌!
python是一门高等编程措辞,语法简介,十分适宜初学者。因此拥有了超级强大的开拓社区,捣鼓出各种神奇的第三方库,比如requests、beautifulsoup、scrapy、xpath、selenium等,都是爬虫界的利器。
当然网络爬虫有利有弊,你可以爬人家的数据,但也要承担可能存在的法律风险。慎重!
本来想先大略先容一下如何学习python爬虫,但还是先把学习资源讲一讲,毕竟好多资源控 ̄□ ̄
对付小白来说,首先是学习python语法。
python学习家族有三个派别:视频派、教程派、书本派。
喜好看视频的就去b站吧,python视频传授教化相称丰富,选择播放量前几名的系统学习下,听说小甲鱼的就还不错。
当然有钱的你,可以选择一些网上课程,像腾讯教室、网易云教室里面的课。
教程派的选择很多了,像菜鸟教程、w3cschool、廖雪峰、python官档...
推举大家先看菜鸟教程、再看廖雪峰,官档随时查询。
再推举几个可能会用到的python学习资源:
Python简明教程(Python3)Python3.7.4官方中文文档Python标准库中文版廖雪峰 Python 3 中文教程Python 3.3 官方教程中文版Python3 Cookbook 中文版笨办法学 Python (PDFEPUB)《Think Python 2e》最新版中文Python 核心编程 第二版 中文菜鸟教程 Python3根本W3cschool Python3根本Python最佳实践指南Python 精要教程Python进阶 中文版中文 Python 条记莫烦python教程The Hitchhiker's Guide to Python草根学 PythonKaggle Python根本学习(英文)李笑来-自学是门手艺-python教程对付书本派来说,买一本踏实的python语法书,确实是必须的。
我之前用过的像《python编程 从入门到实践》、《笨方法学python3》,都是适宜初学者看的。
爬虫的学习资源也非常多。
像崔庆才大佬的网站、b站视频、官方文档、爬虫教材等,下面给大家参考:
awesome-spider 爬虫凑集python仿照上岸&爬虫Python爬虫代理IP池(proxy pool)Python入门网络爬虫之精华版Python3网络爬虫实战有趣的Python爬虫和Python数据剖析小项目Python入门爬虫Requests 英文文档Requests 中文文档Scrapy 英文文档Scrapy 中文文档Pyspider 英文文档BeautifulSoup中文文档BeautifulSoup英文文档Xpath教程崔庆才网站还有一本python爬虫书也是很不错的,适宜入门。
四、如何入门python爬虫?
终于讲到入门实操了,之前我写过一个爬虫入门回答,这里搬运过来。
序言本文针对初学者,我会用最大略的案例见告你如何入门python爬虫!
想要入门Python 爬虫首先须要办理四个问题
熟习python编程理解HTML理解网络爬虫的基本事理学习利用python爬虫库1、你该当知道什么是爬虫?网络爬虫,实在叫作网络数据采集更随意马虎理解。
便是通过编程向网络做事器要求数据(HTML表单),然后解析HTML,提取出自己想要的数据。
归纳为四大步:
根据url获取HTML数据解析HTML,获取目标信息存储数据重复第一步这会涉及到数据库、网络做事器、HTTP协议、HTML、数据科学、网络安全、图像处理等非常多的内容。但对付初学者而言,并不须要节制这么多。
2、python要学习到什么程度如果你不懂python,那么须要先学习python这门非常easy的措辞(相对其它措辞而言)。
编程措辞根本语法无非是数据类型、数据构造、运算符、逻辑构造、函数、文件IO、缺点处理这些,学起来会显呆板但并不难。
刚开始入门爬虫,你乃至不须要去学习python的类、多线程、模块之类的略难内容。找一个面向初学者的教材或者网络教程,花个十几天功夫,就能对python根本有个三四分的认识了,这时候你可以玩玩爬虫喽!
当然,条件是你必须在这十几天里负责敲代码,反复咀嚼语法逻辑,比如列表、字典、字符串、if语句、for循环等最核心的东西都得捻熟于心、于手。
教材方面比较多选择,我个人是比较推举python官方文档以及python简明教程,前者比较系统丰富、后者会更简练。
3、为什么要懂HTML前面说到过爬虫要爬取的数据藏在网页里面的HTML里面的数据,有点绕哈!
维基百科是这样阐明HTML的
超文本标记措辞(英语:HyperTextMarkupLanguage,简称:HTML)是一种用于创建网页的标准标记措辞。HTML是一种根本技能,常与CSS、JavaScript一起被浩瀚网站用于设计网页、网页运用程序以及移动运用程序的用户界面[3]。网页浏览器可以读取HTML文件,并将其渲染成可视化网页。HTML描述了一个网站的构造语义随着线索的呈现,使之成为一种标记措辞而非编程措辞。
总结一下,HTML是一种用于创建网页的标记措辞,里面嵌入了文本、图像等数据,可以被浏览器读取,并渲染成我们看到的网页样子。
以是我们才会从先爬取HTML,再 解析数据,由于数据藏在HTML里。
学习HTML并不难,它并不是编程措辞,你只须要熟习它的标记规则,这里大致讲一下。
HTML标记包含标签(及其属性)、基于字符的数据类型、字符引用和实体引用等几个关键部分。
HTML标签是最常见的,常日成对涌现,比如<h1>与</h1>。
这些成对涌现的标签中,第一个标签是开始标签,第二个标签是结束标签。两个标签之间为元素的内容(文本、图像等),有些标签没有内容,为空元素,如<img>。
以下是一个经典的Hello World程序的例子:
<!DOCTYPEhtml><html><head><title>Thisisatitle</title></head><body><p>Helloworld!</p></body></html>
HTML文档由嵌套的HTML元素构成。它们用HTML标签表示,包含于尖括号中,如<p>[56]
在一样平常情形下,一个元素由一对标签表示:“开始标签”<p>与“结束标签”</p>。元素如果含有文本内容,就被放置在这些标签之间。
4、理解python网络爬虫的基本事理在编写python爬虫程序时,只须要做以下两件事:
发送GET要求,获取HTML解析HTML,获取数据这两件事,python都有相应的库帮你去做,你只须要知道如何去用它们就可以了。
5、用python库爬取百度首页标题和图片首先,发送HTML数据要求可以利用python内置库urllib,该库有一个urlopen函数,可以根据url获取HTML文件。
这里考试测验获取百度首页“https://www.baidu.com/”的HTML内容:
#导入urllib库的urlopen函数fromurllib.requestimporturlopen#发出要求,获取htmlhtml=urlopen("https://www.baidu.com/")#获取的html内容是字节,将其转化为字符串html_text=bytes.decode(html.read())#打印html内容print(html_text)
看看效果:
我们看一下真正百度首页html是什么样的,如果你用的是谷歌浏览器,在百度主页打开设置>更多工具>开拓者工具,点击element,就可以看到了:
比拟一下你就会知道,刚才通过python程序获取到的HTML和网页中的一样!
获取了HTML之后,接下就要解析HTML了,由于你想要的文本、图片、视频都藏在HTML里,你须要通过某种手段提取须要的数据。
python同样供应了非常多且强大的库来帮助你解析HTML,这里以著名的python库BeautifulSoup为工具来解析上面已经获取的HTML。
BeautifulSoup是第三方库,须要安装利用。
在命令行用pip安装就可以了:
pipinstallbs4
BeautifulSoup会将HTML内容转换成构造化内容,你只要从构造化标签里面提取数据:
比如,我想获取百度首页的标题“百度一下,我就知道”,怎么办呢?
这个标题是被两个标签套住的,一个是一级标签,另一个是二级标签。
以是只要从标签中取出信息:
# 导入urlopen函数from urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 要求获取HTMLhtml = urlopen("http://www.baidu.com/")# 用BeautifulSoup解析htmlobj = bf(html.read(),'html.parser')# 从标签head、title里提取标题title = obj.head.title# 打印标题print(title)
看当作果:
这样就搞定了,成功提取出百度首页的标题。
如果我想要下载百度首页logo图片呢?
第一步先获取该网页所有图片标签和url,这个可以利用BeautifulSoup的findAll方法,它可以提取包含在标签里的信息。
一样平常来说,HTML里所有图片信息会在“img”标签里,以是我们通过findAll("img")就可以获取到所有图片的信息。
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 要求获取HTMLhtml = urlopen("http://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)
看当作果:
打印出了所有图片的属性,包括class(元素类名)、src(链接地址)、长宽高档。
个中有百度首页logo的图片,该图片的class(元素类名)是index-logo-src。
[<img class="index-logo-src" height="129" hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" usemap="#mp" width="270"/>, <img alt="到百度首页" class="index-logo-src" src="//www.baidu.com/img/baidu_jgylogo3.gif" title="到百度首页"/>]
可以看到图片的链接地址在src这个属性里,我们要获取图片链接地址:
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 要求获取HTMLhtml = urlopen("http://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)
结果:
获取地址后,就可以用urllib.urlretrieve函数下载logo图片:
# 导入urlopenfrom urllib.request import urlopen# 导入BeautifulSoupfrom bs4 import BeautifulSoup as bf# 导入urlretrieve函数,用于下载图片from urllib.request import urlretrieve# 要求获取HTMLhtml = urlopen("http://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':
6、结语
本文用爬取百度首页标题和logo图片的案例,讲解了python爬虫的基本事理以及干系python库的利用,这是比较低级的爬虫知识,还有很多精良的python爬虫库和框架等待后续去学习。
当然,节制本文讲的知识点,你就已经入门python爬虫了。加油吧,少年!
疫情分外期间,很多人在家闲着,趁这个机会学习python爬虫,上班后也能连续学习python大法。