从零开始写python爬虫

从零开始写python爬虫

(本文代码、链接较多,用PC打开本文效果更佳~ )

带大家了解一下Python爬虫,写的很简单,仅做抛砖引玉之用

目标网站:猫眼电影TOP100榜

(https://maoyan.com/board/4)

需求分析:获取TOP100电影名以及相应的评分,并且输出为TXT文档

TXT文档字段:电影名\t(制表符)评分\n。

选型:Python,简洁强大,适合新手,类库多

可以预先了解一下Python的基础语法

廖雪峰的Python教程(https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c0000)

了解即可,不需要熟记所有的知识点

所用类库:

bs4:全称beautifulsoup4,是用于从HTML文件中提取数据的Python库。简单来说,这个包的功能就是我们需要的数据(在这里是电影名和相对应的评分)从网页(HTML文件)中提取出来。

另外,值得一提的是,这是少数有官方中文文档的Python库(良心啊):https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

urllib:urllib库在爬虫中的作用,主要是发起请求并接受返回的数据,这是Python的一个官方库

参考文档:

https://docs.python.org/zh-cn/3.6/library/urllib.request.html#module-urllib.request

(未完全汉化)

1.准备工作:

下载python环境,安装编辑器或IDE

IDE推荐JetBrains的PyCharm,和他家的IDEA一样好用!,而且教育版免费!!!。IDE的好处是省心,功能强大,减少了配环境和debug痛苦……

(https://www.jetbrains.com/pycharm/)

编辑器推荐VScode,作为编辑器只要有环境,有插件,什么语言都能写。这篇推送就是在VSCode用markdown写的。(什么?环境怎么配?都用编辑器装B了,配个Python环境也是小意思啦~ 在这里就不说了)

同时也写C\C++\C#的同学,用VS2017也是可以的。

在这里笔者使用了Pycharm作为Python的IDE。

2.) 安装类库——pip的使用

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、载入、安装、卸载的功能。Python 2.7.9 + 或 Python 3.4+ 以上版本自带 pip 工具。

pip使用方法详见:(http://www.runoob.com/w3cnote/python-pip-install-usagehtml)

在这里主要是使用命令

具体步骤:

① 打开CMD或者是Powershell

② 切换到Python的安装目录 命令:

③ 输入安装完成后 再输入最后再输入

(我这里已经安装urllib3,所以显示的是已安装)

至此,我们安装环境就配置完成,接下来就进入到分析网页环节。

2.分析网页

在这个简单的爬虫中,我们所需要了解的主要是url链接和dom标签的结构。

1.) url链接

提取每一页的URL链接

第一页:https://maoyan.com/board/4?offset=0

第二页:https://maoyan.com/board/4?offset=10

第三页:https://maoyan.com/board/4?offset=20

我们可以看出来,每一个URL的差异仅仅是后数字的不同。第一页为0,之后每翻一页,该数字递增10。我们将利用这个特性构建爬虫所需要的url链接。

我们将使用这些构建好的链接,用urllib3库对访问服务器,抓取我们所需要的HTML文件。

对于想知道URL为什么是这样写的同学,可以参见wiki百科:https://zh.wikipedia.org/wiki/统一资源定位符

(其实还有一种url的风格是RESTful,在这里就不展开说了。 又可以水一篇推送了2333333)

2.) 网页结构

(想详细学习的同学可以直接去看BeautifulSoup包的文档)

拿到HTML文件后,需要提取出有用的信息。

比如我们要查看大闹天宫的排名,电影名,评分。在这里,我们需要通过相应字段所在的元素的标签,以及标签所带的CSS选择器,获取我们所需的数据。

我们需要使用chorme的检查功能查看网页的源代码

打开之后,找到电影名称和分数所对应的标签

我们可以看出来,我们的电影名字在一个下的 标签内。同样,其他的字段所对应的标签,我们也可以用这个方法找到。

接下来,我们将利用这些字段所对应的标签,利用beatutifulsoup包对标签内的字符串进行提取,即可获得我们的所需的信息

以上,编程的大致思路就是这样,下面开始写程序。

3.写代码

importurllib.request

frombs4importBeautifulSoup

importlxml

##############

# 类库导入 #

##############

defgetdata(url,fileObject):headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}#构建请求头req=urllib.request.Request(url,headers=headers,method='GET')#调用urllib方法下的request方法#req的参数:url请求连接 header构建请求头 method请求方法Response=urllib.request.urlopen(req)#接受请求的回复TEXT=Response.read().decode('utf-8')#提取回复的html,并且转化为utf-8格式soup=BeautifulSoup(TEXT,"lxml")#调用beautifulsoup模组,将提取的HTML转换为可以搜索的soup对象names=soup.find_all("p",class_="name")score=soup.find_all("p",class_="score")#利用find_all方法,搜索出我们所需要的内容(详见bs4的文档)stirng=""fora,binzip(names,score):forcina.stripped_strings:string=str(c)+"\t",fordinb.stripped_strings:string="".join(tuple(string))+d string+='\n'fileObject.write(string)#将find_all内的内容迭代出来,组成字符串,并且写入文件

n=

urls="https://maoyan.com/board/4?offset="

#构建url

fileObject=open('top100电影.txt','a',encoding="utf-8")

#创建文件对象

whilen

fileObject.close()

#关闭文件对象

4.爬取数据

最后数据文件就是这个样子啦

接下来大家可以拷贝到Excel尝试进行简单的数据分析

比如画一个直方图什么的

在这里就不详细说了

5.结语

说了这么多,还是要靠大家拿起IDE和编辑器,尝试一下~ 看文档~ 看源码~ 这样才能有所提高,共勉之~

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190124G029EJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券