首页 > 编程语言 >关于Python爬虫的一些总结

关于Python爬虫的一些总结

时间:2023-04-10 11:38:00浏览次数:42  
标签:总结 XML Python 路径 爬虫 HTML 文档 表达式

作为一名资深的爬虫工程师来说,把别人公开的一些合法数据通过爬虫手段实现汇总收集是一件很有成就的事情,其实这只是一种技术。

初始爬虫

问题:

什么是爬虫?

网络爬虫是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。

爬虫有什么用?

① 网络数据采集

② 大数据分析

③ 网页分析

什么工作原理?

首先来看网页特征

1、HTML 描绘网页信息

HTML是一种标记语言,用标签标记内容并加以解析和区分。

浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。

2、使用 HTTP / HTTPS传输协议

3、唯一的地址路径 URL

所以我们可以拿到 URL,通过使用 HTTP / HTTPS传输协议来获取整个 HTML 页面,然后解析整个 HTML 就可以得到 HTML 中的数据

那么对于一个程序员来说就是:

1、拿到要爬取的URL

2、发送 Request 请求

① 设置请求方式:GET、POST
② 请求的URL
③ 请求头
④ 请求体

3、获取 Response 数据

① 响应状态:ResponseCode
② 响应头:ResponseHeader
③ 响应体:ResponseBody

4、数据解析

① 直接返回
② json、xml解析
③ 正则表达式
④ BeautifulSoup
⑤ Xpath
⑥ Lxml
⑦ html6lib

5、数据存储

① json、xml、txt直接保存
② MySQL、SQL Server
③ MongoDB、Redis、Excel
④ file类型:image、video、mp3等等

爬虫战斗

数据解析 BeautifulSoup 和 Lxml

Beautiful Soup

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

Lxml

Lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取。市面上有很多现成的XML解析器,但是为了获得更好的结果,开发人员有时更愿意编写自己的XML和HTML解析器。这时lxml库就派上用场了。这个库的主要优点是易于使用,在解析大型文档时速度非常快,归档的也非常好,并且提供了简单的转换方法来将数据转换为Python数据类型,从而使文件操作更容易。

Beautiful Soup 和 Lxml 对比

两个我都尝试过 lxml比beautifulSoup速度更快,容错和处理能力更强,

还有另外一点lxml可以使用Xpath

所以我后面使用lxml

Beautiful Soup

pip3 install beautifulsoup4

Lxml安装

pip3 install lxml

Xpath语法

认识Xpath

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。

XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

因此,对 XPath 的理解是很多高级 XML 应用的基础。

说白了 Xpath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

选取节点

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

下面列出了最有用的路径表达式:

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

谓语被嵌在方括号中。

实例

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

标签:总结,XML,Python,路径,爬虫,HTML,文档,表达式
From: https://www.cnblogs.com/q-q56731526/p/17302360.html

相关文章

  • Python 小型项目大全 11~15
    十一、标题党生成器原文:http://inventwithpython.com/bigbookpython/project11.html我们的网站需要欺骗人们去看广告!但是想出有创意的原创内容太难了。幸运的是,有了标题党生成器,我们可以让一台计算机产生数百万个令人发指的虚假标题。都是低质量的,但读者似乎并不介意。这个程......
  • Python 小型项目大全 16~20
    #16钻石原文:http://inventwithpython.com/bigbookpython/project16.html这个程序的特点是一个小算法,用于绘制各种尺寸的ASCII艺术画钻石。它包含绘制轮廓或你指定大小的填充式菱形的功能。这些功能对于初学者来说是很好的练习;试着理解钻石图背后的图案,因为它们的尺寸越来......
  • Python 小型项目大全 21~25
    二十一、DNA可视化原文:http://inventwithpython.com/bigbookpython/project21.html脱氧核糖核酸是一种微小的分子,存在于我们身体的每个细胞中,包含着我们身体如何生长的蓝图。它看起来像一对核苷酸分子的双螺旋结构:鸟嘌呤、胞嘧啶、腺嘌呤和胸腺嘧啶。这些用字母G、C、A和......
  • Python 小型项目大全 26~30
    二十六、斐波那契原文:http://inventwithpython.com/bigbookpython/project26.html斐波那契数列是一个著名的数学模式,被认为是13世纪意大利数学家斐波那契的杰作(尽管其他人发现它的时间更早)。序列从0和1开始,下一个数字总是前两个数字的和。这个序列永远继续下去:0,1,1......
  • Python 小型项目大全 6~10
    六、凯撒密码原文:http://inventwithpython.com/bigbookpython/project6.html凯撒密码是朱利叶斯·凯撒使用的一种古老的加密算法。它通过将字母在字母表中移动一定的位置来加密字母。我们称移位的长度为密钥。比如,如果密钥是3,那么A变成D,B变成E,C变成F,以此类推。要解密信息,你......
  • Python中的args和kwargs
    在Python的使用中,我们经常会遇到这样的函数定义:defmy_func(x,y,*args,**kwargs):forarginargs:print(arg)forkey,valueinkwargs.items():print(f"{key}:{value}")你是否好奇,这里的args和kwargs分别是什么含义呢?args顾名思义,是argumen......
  • Python Tkinter padx pady
    padx和pady padx=水平边距,pady=垂直边距padxpady:单位像素 先不加入padx和padyfromtkinterimport*root=Tk()Button(text='按').grid()root.mainloop() 然后加入:fromtkinterimport*root=Tk()Button(text='按').grid(padx=50,pady=10)root......
  • 方法总结|金融时间序列联动相关及风险溢出
     在金融时间序列研究中,市场间的联动相关和风险溢出一直是热点方向。随着研究不断深入,方法也层出不穷,比如从收益率到波动率,从一阶矩到高阶矩,从静态不变到动态时变,从线性相关到非线性相关,从尾部对称到尾部非对称等等...... 1.收益率相关、均值溢出。 主要方法包括:ARIMA、协......
  • 方法总结|风险溢出主要方法CoVaR、MES、SRISK、DY
     近年来,在防范化解系统性金融风险的背景下,市场间的风险溢出及系统性风险是一个研究热点,运用的指标主要有CoVaR、CoES、MES、LRMES、SRISK、DY等。通常情况下,计算方法可以分为静态和动态,线性和非线性,上行和下行,具体概括为以下几类:  1.静态/时变Copula  2.上行/下行Copu......
  • PYTHON 字节数组
    字节数组字节数组是可变类型,采用bytearray内置函数构造。在REPL中,输入help(bytearray)可以获得相关信息。字节数组的来源可以是:可迭代的整数序列,整数范围为0~255;字符串;字节或者另外的字节数组对象;任意实现了缓冲区API的对象。>>>×=bytearray('\×12\×34\×56\×78')>......