100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python教程入门 想学python网络爬虫 应该怎么开始?怎么应用到实际的工作中? –

python教程入门 想学python网络爬虫 应该怎么开始?怎么应用到实际的工作中? –

时间:2018-11-01 01:10:22

相关推荐

python教程入门 想学python网络爬虫 应该怎么开始?怎么应用到实际的工作中? –

Python

html

正则表达式

Python是大家用于爬虫的工具,结合requests、BeautifulSoup等第三方工具包可以实现程序的开发。而html是大家要爬的目标,需要了解其中标签的含义。另外,在爬虫过程中需要很多字段和标签的匹配,这会经常用到正则表达式。

当然,一个成熟的爬虫需要的技能远不止这些技能。下面偶就以最简单的思路,逐步介绍一下如何开始爬虫,保证一文看完就能明白。

前言就如同标题指明的那样,本文主要针对入门,如果寻求进阶,或者在爬虫方面走的更远,本文提供的帮助是微乎其微的,本文的主要目的就是用简单的方式、简单的语言帮助对网页爬虫感兴趣的同学。目前网上有关网页爬虫的指导有很多,但是套路却是千篇一律,基本都是围绕以下内容进行展开,CSS/html等网页知识requests或urllibBeautifulSoup或正则表达式Selenium或者Scrapy对于偶来说,学习爬虫知识一项获取数据的工具,而不是工作的主要内容,因此,没有太多的时间花费在上述知识成体系的学习上面。上述提到的每块都涉及大量的知识,一段时间的学习之后容易让人陷入”云里雾里”,然后就丧失了学习的兴趣,没有全局观、没有重点,最终使得学习效率非常低下。本文不详细的讲解什么是CSS/html,怎么用requests或者urllib,本文主要目的是介绍怎么去爬取一个网站、爬取大家需要的资源,可能会用到上述一个或几个模块里的知识,对大家用到的功能了解即可,没有必要从头至尾的学习一遍,希望能够用这种方法让对爬虫感兴趣的同学对这项技术有一个统筹的认识,能够满足日常获取数据的需求,如果想要在这项技术上深入研究,可以后续学习其他成体系的课程,对上述模块认真、详细的学习。准备工作很多网页爬虫的教程中使用或者提及到很多工具,本文选择以下几项工具,网页浏览器(Google Chrome)BeautifulSoup4requests网页浏览器主要用于查看网页html源码和检查网页单元使用,浏览器有很多,谷歌、火狐、IE等,每个人的喜好不同,可以根据自己的日常习惯进行选择,本文以Google Chrome为例进行讲解。BeautifulSoup4是一个HTML、XML的解析器,它能够轻而易举的解析web网页,从中获取大家想要的单元和信息,能够避免筛选信息时的麻烦,它能够提供用于迭代、搜索、修改解析树的用法。在网页匹配过程中BeautifulSoup的速度并不比正则表达式快,甚至还要慢一些,但是它最大的优势就是简单、便捷,因此是很多网页爬虫工程中的必选工具之一。安装$ pip install beautifulsoup4requests是Python大神Kenneth Reitz的力作,是一个用于网络请求的第三方库,Python已经内容了urllib模块用于访问网络资源,但是使用起来相对麻烦,而requests相比之下要方便快捷很多,因此本文选择用requests进行网络请求。安装$ pip install requests动手实践很多教程选择爬取糗事百科、网页图片,本文就选取另外一个方向,爬取大家常用的百度百科,这样更加直观、易于理解。经常浏览网页,注意细节或者善于总结的会发现,网址主要有两部分组成,基础部分,和对应词条的后缀,例如上述百科词条,由基础部分组成,后缀是item/林志玲/172898?fr=aladdin,因此大家要爬取一个网站首先要获取一个网址。第一步,要确定一个目标,你要爬取什么数据?很多人会认为,这不是废话吗?偶个人认为这是很重要的,有目的才会效率更好,在没有某种目标驱动的情况下,就很难带着问题和压力去做一件事情,这样会变得漫无目的,导致效率很低,因此,偶认为最重要的是首先要清楚想爬取什么数据?网页上的音乐图片素材…本文就以爬取百度百科词条内部链接和下载图片为目标进行讲解。第二步,大家要获取一个基础的网址,百度百科的基础网址,/第三步,打开首页,以林志玲的百度词条为首页开始爬取。第四步,查看源码,很多人都知道查看源码的快捷键是F12,不管是谷歌浏览器还是IE浏览器,都是这样,但是当按下F12之后会不由得疑问,”这是什么东西?”,令人毫无头绪。当然,可以一步一步的去了解源码,学习html的知识,然后用正则表达式去一步一步、一个单元一个单元的匹配大家想要的信息,但是这样未免太复杂了,偶个人推荐使用检查工具。爬取内部链接指向大家想要了解的元素,素,鼠标右键->检查,能够快速定位大家关注的元素。偶觉得到这一步就已经够了,最简单的网页爬虫就是反复的重复以下两个步骤:检查定位大家想要的元素和属性BeautifulSoup4匹配大家要的信息通过检查功能可以看到,百科词条内部链接部分的源码是这样的,元素1:<a target=”_blank” href=”/item/%E5%87%AF%E6%B8%A5%E6%A8%A1%E7%89%B9%E7%BB%8F%E7%BA%AA%E5%85%AC%E5%8F%B8/5666862″ data-lemmaid=”5666862″>凯渥模特经纪公司</a>元素2:<a target=”_blank” href=”/item/%E5%86%B3%E6%88%98%E5%88%B9%E9%A9%AC%E9%95%87/1542991″ data-lemmaid=”1542991″>决战刹马镇</a>元素3:<a target=”_blank” href=”/item/%E6%9C%88%E4%B9%8B%E6%81%8B%E4%BA%BA/10485259″ data-lemmaid=”10485259″>月之恋人</a>元素4:<a target=”_blank” href=”/item/AKIRA/23276012″ data-lemmaid=”23276012″>AKIRA</a>从上述4个元素可以看出,大家想要的信息词条内部链接在标签<a></a>中,标签中有以下几个属性:target:这个属性贵姓在何处打开链接文档,_blank标明浏览器总在一个新标签页载入目标文档,也就是链接href指向的文档。href:前面已经提过很多次,属性href用于指定超链接目标的链接,如果用户选中了标签<a></a>中的内容,则会尝试打开并显示href指定链接的文档。data-*:这是html的新特性可以存储用户自定义的属性。可以看出,大家想要的信息就在href中,也就是词条的内部链接。因此,大家爬虫的目标就很明确了,就是解析出href超链接。到这里,浏览器检查功能已经发挥了它的作用,下一步问题就变成了大家怎么解析出标签中href的链接?这时,BeautifulSoup4就派上用场了。用BeautifulSoup4解析大家从网页上抓取的html,soup = BeautifulSoup(response.text, ‘html.parser’)看到这里也许会疑惑,html.parser是什么?这是一种html的解析器,Python中提供几种html解析器,它们的主要特点分别是,综合来说,大家选取html.parser解析器,选取好解析器之后就开始着手匹配大家想要的元素,可是看一下html发现,网页中有很多<a></a>标签,大家该匹配哪一类呢?<a target=”_blank” href=”/item/AKIRA/23276012″ data-lemmaid=”23276012″>AKIRA</a>仔细看一下会发现特点,target=”_blank”,属性href以/item开头的,于是就有了大家的匹配条件,{“target”: “_blank”, “href”: pile(“/item/(%.{2})+$”)}用这样的匹配条件去匹配符合target、href要求的标签<a></a>,sub_urls = soup.find_all(“a”, {“target”: “_blank”, “href”: pile(“/item/(%.{2})+$”)})完整代码为,def main():url = BASE_URL + START_PAGEresponse = sessions.post(url)response.encoding = response.apparent_encodingsoup = BeautifulSoup(response.text, ‘html.parser’)sub_urls = soup.find_all(“a”, {“target”: “_blank”, “href”: pile(“/item/(%.{2})+$”)})for sub_url in sub_urls: print(sub_url)输出结果为,<a href=”/item/%E5%B9%B8%E7%A6%8F%E9%A2%9D%E5%BA%A6″ target=”_blank”>幸福额度</a><a href=”/item/%E5%8C%97%E4%BA%AC%C2%B7%E7%BA%BD%E7%BA%A6″ target=”_blank”>北京·纽约</a><a href=”/item/%E5%A4%9A%E4%BC%A6%E5%A4%9A%E5%A4%A7%E5%AD%A6″ target=”_blank”>多伦多大学</a><a href=”/item/%E5%88%BA%E9%99%B5″ target=”_blank”>刺陵</a><a href=”/item/%E5%86%B3%E6%88%98%E5%88%B9%E9%A9%AC%E9%95%87″ target=”_blank”>决战刹马镇</a><a href=”/item/%E5%8C%97%E4%BA%AC%C2%B7%E7%BA%BD%E7%BA%A6″ target=”_blank”>北京·纽约</a><a href=”/item/%E5%BC%A0%E5%9B%BD%E8%8D%A3″ target=”_blank”>张国荣</a><a href=”/item/%E5%A5%A5%E9%BB%9B%E4%B8%BD%C2%B7%E8%B5%AB%E6%9C%AC” target=”_blank”>奥黛丽·赫本</a><a href=”/item/%E6%9E%97%E5%81%A5%E5%AF%B0″ target=”_blank”>林健寰</a><a href=”/item/%E6%96%AF%E7%89%B9%E7%BD%97%E6%81%A9%E4%B8%AD%E5%AD%A6″ target=”_blank”>斯特罗恩中学</a><a href=”/item/%E5%A4%9A%E4%BC%A6%E5%A4%9A%E5%A4%A7%E5%AD%A6″ target=”_blank”>多伦多大学</a><a href=”/item/%E5%8D%8E%E5%86%88%E8%89%BA%E6%A0%A1″ target=”_blank”>华冈艺校</a><a href=”/item/%E5%94%90%E5%AE%89%E9%BA%92″ target=”_blank”>唐安麒</a><a href=”/item/%E6%97%A5%E6%9C%AC%E5%86%8D%E5%8F%91%E7%8E%B0″ target=”_blank”>日本再发现</a><a href=”/item/%E4%BA%9A%E5%A4%AA%E5%BD%B1%E5%B1%95″ target=”_blank”>亚太影展</a><a href=”/item/%E6%A2%81%E6%9C%9D%E4%BC%9F” target=”_blank”>梁朝伟</a><a href=”/item/%E9%87%91%E5%9F%8E%E6%AD%A6″ target=”_blank”>金城武</a>……在用属性字段sub_url[“href”]过滤一下即可,/item/%E5%B9%B8%E7%A6%8F%E9%A2%9D%E5%BA%A6/item/%E5%8C%97%E4%BA%AC%C2%B7%E7%BA%BD%E7%BA%A6/item/%E5%A4%9A%E4%BC%A6%E5%A4%9A%E5%A4%A7%E5%AD%A6/item/%E5%88%BA%E9%99%B5/item/%E5%86%B3%E6%88%98%E5%88%B9%E9%A9%AC%E9%95%87/item/%E5%8C%97%E4%BA%AC%C2%B7%E7%BA%BD%E7%BA%A6/item/%E5%BC%A0%E5%9B%BD%E8%8D%A3……就得到了词条内部链接的后缀部分,然后和基础的url拼接在一起就是完整的内部链接地址。同理,用同样的方法也可以爬取其他内容,比如糗事百科的笑话、专业网站的素材、百度百科的词条,当然,有些文本信息比较杂乱,这个过程中需要一些信息的筛选过程,例如利用正则表达式来匹配一段文本中有价值的信息,方法与上述大同小异。下载图片和爬取内部链接一样,要善于利用浏览器的检查功能,检查一下词条内部图片的链接,<img class=”picture” alt=”活动照” src=”/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D220/sign=85844ee8de0735fa95f049bbae500f9f/dbb44aed2e738bd49d805ec2ab8b87d6267ff9a4.jpg”>发现,图片链接存放在<img></img>标签内部,用上述方法可以匹配到图片的完整链接,url = BASE_URL + START_PAGEresponse = sessions.post(url) response.encoding = response.apparent_encodingsoup = BeautifulSoup(response.text, “html.parser”)image_urls = soup.find_all(“img”, {“class”: “picture”})for image_url in image_urls: print(image_url[“src”])输出如下,/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D220/sign=36dbb0f7e1f81a4c2232ebcbe7286029/a2cc7cd98d1001e903e9168cb20e7bec55e7975f.jpg /-fo3dSag_xI4khGkpoWK1HF6hhy/baike/s%3D220/sign=85844ee8de0735fa95f049bbae500f9f/dbb44aed2e738bd49d805ec2ab8b87d6267ff9a4.jpg …然后用requests发送请求,获取图片的数据,然后以读写文件的方式存储到本地,for image_url in image_urls:url = image_url[“src”]response = requests.get(url, headers=headers)with open(url[-10:], ‘wb’) as f: f.write(response.content)

除了requests之外,还可以使用urllib.request.urlretrieve下载图片,urlretrieve相对要方便一些,但是对于大文件,requests可以分段读写,更具有优势。

上述介绍的方法是比较简单的一种,如果精力有限也可以尝试一下Selenium或者Scrapy,这两款工具的确非常强大,尤其是Selenium,它本是一款自动化测试工具,但是后来发现它同样可以用于网页爬虫,让浏览器帮助你自动爬取数据的工具,它可以以用户访问网页类似的行为去浏览网页并抓取数据,非常高效,感兴趣的可以尝试一下。

谢邀!

Python是一门较为简单的编程语言,对于一些人来说,自学也是可以学会,但是想要自学Python就要问一下自己是否符合以下条件:

1、完全没有自制力,需要学习环境;

2、想通过视频自学,但无法坚持到最后;

3、你发誓要坚持,可惜遇到问题没人即时的帮你解答;

4、你可以坚持学习,也找到了人给你答疑,但你就业遇到了困难;

5、你刚找到了工作,但是领导下发的任务有好多问题,你不知道该怎样解决

如果符合,建议还是别自学了!

当然如果想要学习可以关注ITPUB技术栈

更多有关人工智能的资讯、深度报道、采访欢迎关注AI中国,无论你是小白还是大神,你想要的这里都有!

零基础就可以入门,python作为一门解释型语言,设计之初就是面向大众,降低编程入门的门槛,而且随着人工智能、大数据的兴起,python的应用和前景也越来越好,下面偶简单介绍一下学习python的基本过程:

1.首先,最基本的就是搭建本地python环境,这里推荐直接安装Anaconda,集成了python解释器及众多第三方库,还自带notebook,spyder等开发环境,是一个很不错的软件,至于是python2还是python3,建议直接python3,python2会在停止更新和维护:

安装完成后,可以进入开始菜单,选择IPython Notebook进行编程,一个基于Web页面的编程环境,界面整洁、简单友好,使用起来非常不错:

当然,熟悉后,你也可以使用spyder,pycharm等专门的IDE来进行python开发,都可以:

2.入门python,这里的资料就很多了,有网上的教学视频,也有相应的参考书籍,根据自己实际情况,选择一种合适的方式,一边学习,一边练习代码和示例,不要只看不练,掌握好基本功,包括变量、语句、函数、类、文件操作、正则表达式、异常处理等,稳打稳扎,不要急功近利,基于求成:

3.最后就是进阶深入阶段了,这个时候,就可以根据自己兴趣,市场需求,找一两个有前景的方向深入学习了,python涉及的方面太多了,Web开发、数据处理、机器学习、运维、测试等,每个方向都投入精力,显然是不可能的,坚持一两个方向就行,像机器学习、爬虫等:

就分享这么多吧,初学阶段,最重要的还是要多练习,掌握好基本功,在进阶阶段,就是多做项目,多积累经验,这样自己才能不断提高,希望以上分享的内容能对你有所帮助吧,也欢迎大家留言、评论。

如果没有任何基础编程基础也可以成为合格的python web方向程序员

学习时间充裕的情况下可以按下面步骤循序渐进的成长:

1、第一阶段,打基础

先学习linux操作系统的基本操作

然后在linux环境下学习python语言

语法

数据类型

函数

io操作

错误和异常

常用模块

系统编程

网络编程

数据结构

常用算法

面向对象

设计模式

python常用模块

2、第二阶段,数据存储和页面展示

学习数据库知识比如:mysql、redis、mongodb。

学习web前端html,css,js,jq,vue。

3、第三阶段,应用组件

学习框架:tornado、django、flask,最好选择两个框架进行学习,

学习部署、git、爬虫、数据挖掘、全文搜索、日志管理、单元测试、代码维护,

学习缓存系统、文件系统、任务系统、消息队列。

4、第四阶段,实战

选择知乎或者豆瓣等网站进行模仿,实际演练后可以巩固学到的知识。

5、第五阶段,扩展

学习人工智能的相关知识。

总结,以上就是关于python教程入门以及想学python网络爬虫,应该怎么开始?怎么应用到实际的工作中的经验分享,卡友有疑问可以加wx或扫码加群!

python教程入门 想学python网络爬虫 应该怎么开始?怎么应用到实际的工作中? – python – 前端 简易python教程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。