《数据采集与预处理》课件6:静态网页爬取模块-数据存储_第1页
《数据采集与预处理》课件6:静态网页爬取模块-数据存储_第2页
《数据采集与预处理》课件6:静态网页爬取模块-数据存储_第3页
《数据采集与预处理》课件6:静态网页爬取模块-数据存储_第4页
《数据采集与预处理》课件6:静态网页爬取模块-数据存储_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件存储Xpath解析的规则(标签、文本,属性的值)复习了解robots协议掌握txt文件的存储掌握csv文件的存储理解从网页爬取、解析到存储的过程教学目标1txt文件存储静态网页数据采集–数据存储Robots协议2Csv文件存储3Robots协议Robots协议Web服务器默认接收人类访问受限于编写水平和目的,网络爬虫将会为Web服务器带来巨大的资源开销网络爬虫的“性能骚扰”Robots协议服务器上的数据有产权归属网络爬虫获取数据后牟利将带来法律风险网络爬虫的法律风险Robots协议网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私网络爬虫的隐私泄露Robots协议网络爬虫引发的问题性能骚扰法律风险隐私泄露Robots协议来源审查:判断User‐Agent进行限制检查来访HTTP协议头的User‐Agent域,只响应浏览器或友好爬虫的访问发布公告:Robots协议告知所有爬虫网站的爬取策略,要求爬虫遵守网络爬虫的限制Robots协议Robots协议称作爬虫协议、机器人协议,全称是网络爬虫排除标准(RobotsExclusionProtocol),用来告诉爬虫和搜索引擎可以抓取哪些页面。它通常是一个叫做robots.txt文件,该文件要求如下:robots.txt文件必须放置在站点的根目录下,且文件名必须小写;文件中的记录通常以一行或多行User-agent(用于描述受限制的robot的名字)开始,后面加上Disallow(用于描述不希望被访问到的URL)行。当搜索爬虫访问一个站点时,一般流程如下:1.检测站点根目录下是否存在robots.txt文件;2.若robots.txt文件存在,爬虫会依据定义的爬取范围来爬取;若robots.txt文件不存在,爬虫会访问所有可直接访问的页面。Robots协议robots.txt文件包含一些规则,具体如下:User-agent:搜索爬虫名称,代表设置的规则对哪些爬虫有效;*代表协议对任何爬取爬虫有效;Disallow:指定不允许抓取的目录;Allow:指定可允许抓取的目录。robots.txt示例:解释:示例表明这个网站的robots协议对每个爬虫都适用,并且不允许爬取/cgi-bin/、/tmp/和/private/下的文件。User-agent:*Disallow:/cgi-bin/Disallow:/tmp/Disallow:/private/Robots协议Robots协议robots.txt文件中的爬虫名是固定的,比如百度对应的爬虫名叫作:BaiduSpider。一些常见的搜索爬虫的名称与对应的网站如下表所示:爬虫名称名称网站BaiduSpider百度Googlebot谷歌360Spider360搜索YodaoBot有道ia_archiverAlexaScooteraltavista实际操作中,该如何遵守Robots协议?Robots协议Robots协议的使用:网络爬虫:自动或人工识别robots.txt,再进行内容爬取约束性:Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险Robots协议Robots协议的理解2Robots协议静态网页数据采集----数据存储txt文件存储1Csv文件存储3采集网页数据后,需要存储数据。存储数据的形式多种多样,可以直接保存为文本文件,如:TXT、JSON、CSV、Office等;还可以保存到数据库,如关系型数据库MySQL、非关系型数据库MongoDB、Redis等。文件存储形式多种多样,常见的文件存储如下:TXT文本存储;JSON文件存储;CSV文件存储;Office文件存储;TXT文件存储优点:操作简单;TXT文本几乎兼容任何平台。TXT文件存储缺点:数据检索不方便。文件存储TXT文件存储在Python中,想要操作文件需要先创建或者打开指定的文件并创建File对象,通过内置的open()函数实现,基本语法格式如下:

file=open(filename[,mode[,buffering]])参数解释:

filename:要创建或打开文件的文件名称。如果要打开的文件和当前Python文件在同一个目录下,那么直接写文件名即可,否则需要指定完整路径。例如,打开当前路径下的名称为status.txt的文件,可以使用“status.txt”;

mode:可选参数,用于指定文件的打开模式,默认打开模式为只读(r);

buffering:可选参数,用于指定读写文件的缓冲模式,值为0表示不缓冲,值为1表示缓冲,大于1代表缓存区大小。TXT文件存储mode参数的参数值说明:rwab+可读写二进制读写方式可否读写若文件不存在写入方式W写入创建覆盖写入w+读取+写入创建覆盖写入R读取报错不可写入r+读取+写入报错覆盖写入A写入创建追加写入a+读取+写入创建追加写入TXT文件存储文件路径的常用形式有如下3种。withopen("d:\\yongzhou\\title.txt","a+")asf:withopen(r"d:\yongzhou\title.txt","a+")asf:withopen("d:/yongzhou/title.txt","a+")asf:有时需要把几个变量写入txt文件中,这时分隔符就比较重要了。可以采用Tab进行分隔,用"\t".join()将变量连接成一个字符串。参考代码如下。out=["SNo","SName","Sex"]#列表初始化

withopen("d:\\yongzhou\\title.txt","a+",encoding="utf-8")asf:

outstr="\t".join(out)#列表中的元素以Tab作为分隔符,连接为一个字符串

f.write(outstr)#文件写入案例(小组讨论):把重庆工程学院新闻列表页面爬取下来,保存到txt文件中,然后利用xpath解析txt文件,打印新闻列表。

TXT文件存储

步骤分析:1、利用通用爬虫框架爬取页面2、将爬取的内容存在本地的txt文件中withopen("D:\\spiderFile\news.txt","w+",newline='',encoding="utf-8")asf:

f.write(r.text)3、利用etree解析文本文件

html=etree.parse('F:/test.html',etree.HTMLParser())result=html.xpath('//li')3Robots协议静态网页数据采集–数据存储Csv文件存储1

txt文件存储2CSV文件存储CSV,全称为Comma-SeparaedValues,即逗号分隔值或字符分隔值,其文件以纯文本形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成。每条记录由字段组成,字段间的分隔符是其他字符或字符串,最常见的是逗号或制表符。所有记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。Python提供了csv库实现读取和写入CSV文件。csv库具体函数如下:函数说明csv.reader()读取CSV文件csv.writer()将数据写入CSV文件csv.register_dialect()将dialect与name联系起来csv.unregister_dialect()从dialect注册表中删除与名称关联的dialectcsv.get_dialect返回与name相关的dialectcsv.list_dialects()返回所有已注册dialect的名称csv.field_size_limit()返回解析器允许的当前最大字段大小CSV文件存储读取读操作csv.reader()函数具体语法如下:csv.reader(csvfile,dialect='excel',**fmtparams)参数解释如下:

csvfile:CSV文件;

dialect:编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册;

fmtparam:格式化参数,用来覆盖之前dialect对象指定的编码风格。CSV文件存储读取使用csv.reader()函数读取数据,具体代码如下:importcsvwithopen('F:/iris.csv','r')ascsvfile:read=csv.reader(csvfile)forrowinread:print(row)运行结果如下:CSV文件存储写入使用csv.writer()函数具体语法如下:

csv.writer(csvfile,dialect='excel',**fmtparams)importcsvwithopen('data.csv','w')ascsvfile:

writer=csv.writer(csvfile)#创建CSV对象writer.writerow([‘id’,‘name’,‘age’])#写入标题行writer.writerow(['10001','guo','20'])writer.writerow(['10002','andy','22'])writer.writerow(['10003','feng','25'])CSV文件存储写入读操作csv.writer()函数按字典方式写入中文数据,具体代码如下:运行结果如下:importcsvwithopen(‘data.csv’,‘w’,encoding='utf-8')ascsvfile:fieldnames=[‘id’,‘name’,‘age’]#定义标题域#初始化字典写入对象writer=csv.DictWriter(csvfile,fieldnames=fieldnames)#写入头信息

writer.writeheader()writer.writerow({'id':'10001','name':'郭','age':'20'})writer.writerow({'id':'10002','name':'张','age':'22'})writer.writerow({'id':'10003','name':'凤','age':'25'})案例(小组讨论):把重庆工程学院新闻列表页面爬取下来,新闻列表保存到csv文件中。

csv文件存储

步骤分析:1、利用通用爬虫框架爬取页面2、利用etree解析html字符串

3、保存新闻列表到csv文件中CSV文件存储使用Pandas进行CSV文件输出,输入数据类型最好为字典类型。以下案例为字典类型输入输出为CSV文件。参考代码如下。知识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论