Python爬虫技术路线?
2020-06-09 18:15:02 时小峰
摘要: 原标题:Python爬虫技术路线? 对于初学者而言,Python爬虫的技术路线应该怎么取舍? 首先展示一下如何用python爬虫requests库进行爬取,requests库是python爬虫

  原标题:Python爬虫技术路线?

 

  对于初学者而言,Python爬虫的技术路线应该怎么取舍?

 

  首先展示一下如何用python爬虫requests库进行爬取,requests库是python爬虫最基础也必须掌握的库。Requests库教程:1、Requests库速成教程;2、Requests全面教程。

  >>> import requests

 

  >>> r = requests.get( "https://sand-box.cn" )

 

  >>> print r.text

 

  r.text就是url返回的html代码结果。Requests库的好处就是API设计的很人性化;用起来很舒服。

 

  Requests库只能返回某个url返回的代码,但html代码中的js脚本的运行结果,Requests库则无法获取,若想获取已经加载过的网页中的信息,这时你需要的是Selenium,通过python调用Webdriver的模式来让一个Chrome浏览器或Firefox浏览器或其他浏览器听从你代码的指挥来构建一些程序,比如完成加载多少秒后,提取有哪里的代码……

 

  Python Selenium 英文教程

 

  Python Selenium 中文教程

 

  如果是要构建一个大规模的爬虫系统,python中比较有名的爬虫框架是scrapy,但是尝试了一下没有选择用scrapy,因为我认为学习成本,还不如自己裸写,而且裸写出来的框架灵活度、自由度都更高,注意关注一下:多线程爬虫、多进程爬虫、异步爬虫(协程)的区别;如果对性能没有到苛刻级别的要求,建议使用多进程爬虫或异步爬虫;自己裸写爬虫框架还要注意“容错机制”。

 

  总之,构建大规模的爬虫系统,个人并不提倡使用第三方框架,推荐裸写。

 

  html源码的解析,其实这不属于爬虫范围,但是一般做爬虫都会遇到html源码解析,所以html解析就成了爬虫必修的一部分,BeautifulSoup则是html解析领域最有名的python库之一;很多年前,MIT一个做数字设计的老师去叫他的学生们学python,让设计学的研究生先学urllib,再用BeautifulSoup去解析提取数据进行大数据分析,我认为这位MIT的老师水平并不怎样,首先他要求了一群零编程基础的学生去做这些事情,其实有必要吗?难道拽一点爬虫技术与数据分析能力这就很有价值吗?其实重点是:1、他推荐零基础的研究生去用urllib,而不是用Requests

 

  2、他推荐零基础的研究生去用BeautifulSoup去提取数据,而不是让这群初学者用最基础的字符串操作来提取数据。

 

  所以,如果你是初学者,在HTML解析这件事,我认为你可以放弃BeautifulSoup,用手动的方式去提取吧。如果你是多年经验的大神,HTML解析这件事,也可以考虑放弃BeautifulSoup,BeautifulSoup并不适合大规模爬虫系统的HTML解析问题,容错问题、内存溢出问题很明显。之前Debug了半天才发现内存溢出的元凶是BeautifulSoup,性能极差。BeautifulSoup确实是个优秀的Python库,但是这得取决你用他的场景。

 

  之后,会开源一个我之前做HTML解析时而设计的库;到时再来补充。

投稿:lukejiwang@163.com
点击展开全文
小福利:支-付-宝首页搜索“536209668”每天可领,人人可领,快抢98元大红包。
Copyright © 2002-2021 鹿科技