零基础不知道如何做Python爬虫,这是一份简单入门的教程!

 andlly   2018-06-26 23:02   69 人阅读  0 条评论

随着互联网的数据爆炸式增长,而利用Python爬虫我们可以获取大量有价值的数据:

 

1.爬取数据,进行市场调研和商业分析

 

爬取知乎优质答案,筛选各话题下最优质的内容; 抓取房产网站买卖信息,分析房价变化趋势、做不同区域的房价分析;爬取招聘网站职位信息,分析各行业人才需求情况及薪资水平。

 

2.作为机器学习、数据挖掘的原始数据

 

比如你要做一个推荐系统,那么你可以去爬取更多维度的数据,做出更好的模型。

 

3.爬取优质的资源:图片、文本、视频

 

爬取商品的评论以及各种图片网站,获得图片资源以及评论文本数据。

 

掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现。

 

 

首先我们来了解爬虫的基本原理及过程

 

大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

 

简单来说,我们向服务器发送请求后,会得到返回的页面,通过解析页面之后,我们可以抽取我们想要的那部分信息,并存储在指定的文档或数据库中。

 

在这部分你可以简单了解 HTTP 协议及网页基础知识,比如 POSTGET、HTML、CSS、JS,简单了解即可,不需要系统学习。

 

学习 Python 包并实现基本的爬虫过程

 

Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议你从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。

 

如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。掌握之后,你会发现爬虫的基本套路都差不多,一般的静态网站根本不在话下,小猪、豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。


存数据

 

首先,我们来说存数据,是因为在初期学习的时候,接触的少,也不需要太过于关注,随着学习的慢慢深入,我们需要保存大批量的数据的时候,就需要去学习数据库的相关知识了!

 

初期,我们抓到需要的内容后,只需要保存到本地,无非保存到文档、表格(excel)等等几个方法,这里大家只需要掌握with语句就基本可以保证需求了。大概是这样的:

 

with open(路径以及文件名,保存模式) as f:

f.write(数据)#如果是文本可直接写入,如果是其他文件,数据为二进制模式更好

 

当然保存到excel表格或者word文档需要用到 xlwt库(excel)、python-docx库(word),这个在网上很多,大家可以自行去学习。

 


 

 

取数据

 

说了这么多,我们来说说主题。怎么来抓取我们想要的数据呢?我们一步步的来!

 

一般所谓的取网页内容,指的是通过Python脚本实现访问某个URL地址(请求数据),然后获得其所返回的内容(HTML源码,Json格式的字符串等)。然后通过解析规则(页面解析),分析出我们需要的数据并取(内容匹配)出来。

 

python中实现爬虫非常方便,有大量的库可以满足我们的需求,比如先用requests库取一个url(网页)的源码

 

import requests#导入库

url = '你的目标网址'

response = requests.get(url) #请求数据

print(response.text) #打印出数据的文本内容

 

这几行代码就可以获得网页的源代码,但是有时候这里面会有乱码,为什么呢?

 

因为中文网站中包含中文,而终端不支持gbk编码,所以我们在打印时需要把中文从gbk格式转为终端支持的编码,一般为utf-8编码。

 

所以我们在打印response之前,需要对它进行编码的指定(我们可以直接指定代码显示的编码格式为网页本身的编码格式,比如utf-8,网页编码格式一般都在源代码中的<meta>标签下的charset属性中指定)。加上一行即可。

 

response.encode = 'utf-8' #指定编码格式

 

至此,我们已经获取了网页的源代码,接下来就是在乱七八糟的源代码中找到我们需要的内容,这里就需要用到各种匹配方式了,常用的几种方式有:正则表达式(re库),bs4(Beautifulsoup4库),xpath(lxml库)!

 

建议大家从正则开始学习,最后一定要看看xpath,这个在爬虫框架scrapy中用的很多!

 

通过各种匹配方式找到我们的内容后(注意:一般匹配出来的是列表),就到了上面所说的存数据的阶段了,这就完成了一个简单的爬虫!

 

 

当然了,在我们具体写代码的时候,会发现很多上面没有说到的内容,比如

 

  • 获取源代码的时候遇到反爬,根本获取不到数据

  • 有的网站需要登录后才可以拿到内容

  • 遇到验证码

  • 获取到内容后写入文件出错

  • 怎样来设计循环,获取大批量的内容甚至整站爬虫

 

剩下的我们再来慢慢的研究。

 

总结

 

 

Python爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技术,高效的姿势就是从实际的项目中去学习这些零散的知识点,你能保证每次学到的都是最需要的那部分。

 

当然唯一麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资源、如何筛选和甄别,是很多初学者面临的一个大问题。


本文地址:http://10tf.com/post/15.html
版权声明:本文为原创文章,版权归 andlly 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?