文本数据采集与处理之一上|学习笔记

简介: 快速学习文本数据采集与处理之一上

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践文本数据采集与处理之一上】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15509


文本数据采集与处理之一上

 

内容介绍

一、 Web 爬虫概述

二、 Request 讲解

 

本节学习第二讲文本数据采集与预处理。要进行文本挖掘的研究与工作,需要文本原,文本原在互联网上大量存在。

学会从互联网上采集与处理文本数据的方法。这一讲分为这样几个内容,文本数据的从互联网采集主要是Web爬虫。会介绍Web爬虫的一些相关技术。

然后,从web上抓取数据,首先要向web网站发请求,发请求有一个包叫request,了解request包的使用。请求反馈的内容,那么需要进行解析和处理。

那么解析主要用的是Lxml这样一个解析的工具。解析主要是把抓取的页面解析成一个文档数然后Xpath从文档数上面摘取果实。

主要是用Xpath方法,果实就是要的文本内容。然后会简介Selenium包是强大的交互能力,能抓取一般比较难以抓取的网站内容,抓取的内容想进一步处理,可以用一个非常强大的工具方法叫正则表达式。

 

 

一、 Web 爬虫概述

image.png

1,什么是爬虫

爬虫是请求网站并提取数据的自动化程序,是程序、软件需要向网站发送请求。得到响应,响应里面就包含着所需要的内容。

2,爬虫的基本流程

先向网站发送请求。网站接受以后反馈就获取响应,响应里面就包含着所需要的内容。在解析这个内容,然后最关键的就是要做解析,工作量花费的比较大的解析,网站响应的内容往往一个长的字符串,没有结构的,解析里面比较好就是变成一个结构。一般是变成一个树的结构,再从树上面去找需要的内容,找到文本内容以后,第四个步骤保存,可以保存成文件,也可以保存到数据库里面去。

3,Request

四个步骤里面先看发起请求,一般用request这样方法来解决。向网站发送请求request,Requests一般有两种方式,一种是GET、POST。GET就是像网站发一个请求,然后把内容给拿回来,POST还要向网站提交一些数据。比如说密码提交了以后,网站响应再拿到内容。请求有个URL,向网站发请求抓页面,到底抓哪一个页面,所以需要明确的URL就是网址,然后请求。还有请求的头的信息。比如说要指定浏览器的类型,因为请求也是通过浏览器的访问的这种方式,并且要模拟成一个浏览器访问。然后,还有一个请求体,像这个网站请求时候发送的一些数据。这是request,之后会专门要详细介绍request的相关内容

4,Response

response是网站接受请求以后在响应返回.响应状态,比如说成功状态,还有些错误的状态。都知道一个404的错误就是网页不存在,这都是响应状态,然后还有响应的头部信息,响应体信息,响应体里面主要是内容在这。

5,解析方式

再看一下很关键的一个解析。解析要花很多时间。解析最简单的,因为反馈的是一个长字符串,最简单就是直接处理字符串,比如从什么位置到什么位置,是需要的内容,或者再稍微复杂一点,用正则表达式的一些规则。对于一些有格式的数据,有相应的方法,比如说反馈的数据就是有结构的像一个表格一样的,那么可以用Json等数据解析。用的比较多的是DOM方法。DOM中文是文档对象模型,Document object model文档对象模型。是把网页解析成一棵文档数,有了这棵树以后,可以用lxml、BeautifulSoup、xpath从这个树上面去翻所需要的枝和叶,课后面会讲解Lxml+Xpath的组合方法。对于其他的一些方式,比如说一些动态的页面,动态脚本,比如说javascript,还有ajax等比较复杂一些的方法

除五个内容之外,还要注意啊,能抓的数据类型有哪些。从网上去爬数据,那可以爬文本、图片、视频等等。爬文本可能比较多,以后随着这个5G时代的到来,可能图片、视频也会越来越多。要保存的这个数据的方式,保存的文本文件、保存到关系数据库。保存到文档数据库。文档数据库可能会更多一点,抓的是一个文本的数据。然后,有些二进制文件,像图片和视频可以保存在二进制文件。另外,还要知道爬虫框架,就是别人已经编好了,长期经过考验的,然后用来做爬虫,里面已经分好了一些步骤也考虑到一些机制,比如说爬的时候突然断掉了以后,再续上去,断点续传,断点续爬,一些调度等,还有专门的框架的一些方法,比如说在python开发里面,比较重要一个scrap框架。这个是最著名,用的最多的,当然稍微有点复杂,另外还有其他的一些框架,后面会提到一个叫Selenium是个爬虫程序,也是一个爬虫的框架。

除了用python的编程之外,也可以用别人编好的这个工具,常用的工具有八爪鱼,用的特别多。一些非专业的人员,比如说搞旅游,搞房产的一些研究生。想做论文抓数据可以用八爪鱼来抓,另外还有后羿,就是射太阳的那个后羿,也是一个采集器,然后,还有就是火车采集器,就是火车头啊,在这几个里面,八爪鱼目前用的最多。也有些同学说不想学编程,想抓数据,八爪鱼就是一个方法。

 

二、 Request 详解

image.png下面来详细了解一下request方法,主要是通过request包来请求网站。在这里面主要有这样几个知识要知道

1,请求UPL

对UPL的结构要非常清楚,以

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name这个作为例子,前面有HTTP冒号,双斜杠后面有一个域名,域名后面一个冒号8080,然后再斜杠后面有一个目录,一个路径。后面再有文件名,然后问号后面再跟一些参数,然后后面*后面跟在跟一个名字。

分别是这样几个内容,一个叫协议HTTP协议,域名www.spxfans.com端口8080,然后虚拟目录的一个目录news,然后下面这是文件名是index asp,然后参数问号后面boardID=5&ID=24618&page都是参数部分。然后也就是*后面就是在页面里面定位到某一个位置。所以对URL很熟悉,因为最后向网站发请求的时候,一定要给一个明确的、准确的、唯一的UPL。

2,请求的方式

前面简单提过有GET和POST除了这两种之外,还有一些PUT,DELETE,HEAD,OPTIONS就是像网站发请求还是有多种方式的,当然用的最多的就是GET和POST。区别就是一个从网站拿数据,不需要往下传,提交数据的,如果要向网站提交数据,要用POST。

3,请求头

、Cookies等

请求头里面用的最多User-Agent用户代理,因为是要模拟一下浏览器去访问网站,所以要设一个User-Agent也就是浏览器的型号。然后还有Cookies,那么Cookies简单的说就是访问一个网站,可以在服务器端设立Cookies记录一些信息,下次再访问的时候,知道是个老访客。知道已经访问过。像有些网站的用户密码登录过以后,下次访问不用再登录用户名密码,都保存在Cookies里面。response=requests.get(url,headers={‘User-Agent:uagent}这个一个例子,Response等于request.get,这个点get就是上面讲的一个get的一个请求方式。然后括号里是URL,URL就是第一个讲的UPL完整的URL,然后头是headers,头在参数的里面参数名字叫headers,然后后面等于一个中括号中,括号里面是一个字典。一个key一个value,然后又是headers等于User-Agent:uagent这是个变量,这个在前面可以设等于什么等于某个浏览器型号。关于浏览器型号以后上机会讲怎么去查浏览器的型号。

4,请求体

请求体,就是请求的时候额外的要下载一些数据。一般会有data、json、params三种携带参数的方法

requests.request(method='POST,url=URL,data={‘k1’:’v1’,’k2’:’水电费’})例子,request.request括号里面可以设 method等于POST,或者在前面把request改成POST也可以,两种方法都可以,两种URL,URL是个变量,前面应该有快捷的URL复职了,然后传data,data里面放的就是key和value,就是字典,字典格式key和value,然后带到网页请求里面。网站接触到请求,同时知道要什么样的参数,这是请求体

5,超时设置

如果网站访问,由于网络问题,如果说不要超时肯定认为就没访问到啊,那就出错了,可以把超时设置的大一点,这有两种超时设置的方法,一个就是直接是timeout 0.1秒,就是超时社,要访问这个时间,在计算机网络里面零点几秒已经蛮长的 再一个呢,可以设两个值。代表了一个是链接的超时里面那个网址的超时,另外一个呢,就是你这个速度的常识啊,可以设两个值。

float or tuple。timeout=0.1#代表接收数据的超时时间 timeout=(0.1,0.2)#0.1代表链接超时0.2代表接收数据的超时时间

6,其它设置

代理设置(proxies)、会话(session)等等

这些之外还有其他的一些设置,比如说设置代理,知道访问有些网站需要代理,可以设置会话,就是和网站之间有会话的一个关系,设会话比较稳定可靠一点。

建议以后再用request的时候,先做一个会话方式,然后再请求网页内容,这个实验里面会有相应的方法。

相关文章
|
SQL Web App开发 XML
广联达OA漏洞合集(信息泄露+SQL注入+文件上传)
广联达Linkworks办公OA存在信息泄露,攻击者可通过此漏洞获取账号密码登录后台,造成其他影响。
2538 1
|
新零售 数据采集 分布式计算
6000字干货分享:数据中台项目管理实践分享
本文总结了企业级数据中台项目的实践经验,希望能够为正在规划或者已在实施数据中台类项目的企业和个人提供经验。
6000字干货分享:数据中台项目管理实践分享
|
8月前
|
负载均衡 容灾 测试技术
弹性公网IP:云时代的”智能通讯管家“
弹性公网IP(Elastic IP)是云计算中实现网络资源灵活管理的重要工具。它如同可自由切换的“电话号码”,解耦了IP与物理设备的绑定,支持快速迁移、故障容灾和成本优化。通过网络地址转换(NAT)技术,弹性公网IP能在不同云服务器间无缝切换,适用于业务迁移、负载均衡扩展及A/B测试等场景。非凡云提供免费弹性公网IP服务,每个账户可申请3个IP,支持高频绑定/解绑操作,带宽独立调整,并配备API管理接口,助力用户实现高效网络资源配置。
416 10
|
机器学习/深度学习 自然语言处理 数据可视化
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
本文探讨了基于Python大数据技术对京东产品评论进行情感分析的研究,涵盖了文本预处理、情感分类、主题建模等步骤,并运用了snwonlp情感分析和LDA主题分析方法,旨在帮助电商企业和消费者做出更明智的决策。
643 1
基于Python大数据的京东产品评论的情感分析的研究,包括snwonlp情感分析和LDA主题分析
|
10月前
|
Linux iOS开发 MacOS
使用PyAudio进行音频处理的全面指南
PyAudio是基于PortAudio的Python绑定,支持跨平台音频设备访问,适用于音频录制、播放和实时处理。本文介绍PyAudio的安装、基础使用(如初始化、查询设备、打开音频流)、播放与录制音频、实时音频处理示例,以及优化建议。通过代码示例,帮助读者掌握PyAudio的应用,实现高效音频处理。
1293 0
|
消息中间件 前端开发 Java
【国产化软件】接口开放平台:Java+Swagger+Vue3,适配移动端
本文档介绍了基于Java的开放平台技术栈及使用流程,涵盖从注册开发者账号、创建应用、申请令牌到调用API接口的全过程。平台提供丰富的接口管理和统计功能,支持开发者在线维护个人资料和接口令牌,同时兼容移动设备访问和黑夜模式。技术栈方面,后端采用Spring Boot 3 + MySQL + Redis + RabbitMQ + Nacos,前端则基于Vue3 + TypeScript 5.x + Element Plus + UnoCSS。访问开放平台的地址为:http://java.test.yesapi.cn/platform/。
|
存储 SQL 分布式计算
大数据中结构化数据
【10月更文挑战第18天】
817 4
|
数据采集 传感器 存储
数据采集
【6月更文挑战第16天】数据采集。
480 12
|
测试技术
深入理解与应用软件测试中的黑盒测试方法
【5月更文挑战第28天】 在现代软件开发的生命周期中,软件测试是确保产品质量和用户满意度的关键步骤。黑盒测试作为一种重要的测试手段,其核心在于无需了解内部代码结构,而是通过功能性的角度来验证软件行为的正确性。本文将探讨黑盒测试的基本概念、主要类型及其在现实场景中的应用,并讨论如何有效地设计黑盒测试用例以提高测试覆盖率和发现潜在缺陷的能力。
|
JavaScript 前端开发
模块化(Modularization)是一种软件工程实践,旨在将大型、复杂的系统分割成一系列松散耦合、功能独立且具有明确定义接口的模块。
模块化简化复杂软件,通过划分独立模块提升代码可读性、维护性、复用性和扩展性。JavaScript模块化有多种方式:CommonJS(Node.js,`require()`/`module.exports`),AMD(RequireJS,异步加载,`define()`/`require()`),以及ES6 Modules(官方标准,`import`/`export`)。早期还有闭包和IIFE等非正式方法。现代工具如Webpack和Rollup处理兼容性问题,使模块化代码能在各种环境中运行。
419 0