美文网首页大数据 爬虫Python AI SqlSpbeen——Python技术栈
【编号0004】爬虫中常用到的数据提取手段

【编号0004】爬虫中常用到的数据提取手段

作者: 布拉豆 | 来源:发表于2019-07-26 18:32 被阅读1次

使用爬虫抓取网上公开的网页数据时,经常需要使用各种技能去解析到手的响应。

本篇文章,重点介绍下,数据提取时,有哪些常见的方法

0. 背景交代

  • 编程语言:Python

  • 提取方式:Python库

1. Xpath提取HTML内容

网页的数据,几乎都是HTML格式的,当然少不了Xpath的解析了,这是解析HTML的主要方法

安装:pip install lxml

调用:

from lxml import etree
info = etree.HTML("这里放HTML字符串")
result = info.xpath("这里放xpath规则")

语法介绍:

  • . 代表当前节点,通常用于逐块提取数据

  • .. 代表父级【上一级】标签

  • / 子级内容

  • // 子孙级内容

  • [] 中括号中间用于放特定条件,示例 div[@class="demo"] class为demo的div标签

  • and & or & not() 与或非的三个条件

  • normalize-space(这里放xpath规则) 去除不可见字符并提取第一个元素的函数

更多教程链接:xpath教程【spbeen】 爬虫之数据解析的三种方式【cnblogs】

2. 正则表达式

如果数据时在js中,xpath是无法解析到js代码中的数据的,则此时,推荐正则表达式,提取出需要的数据

调用:import re re是python的内置库

示例:

patternstr = "base64,(.*?)'" 
result = re.search(pattern, html)

语法介绍:

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

更多教程连接:python re模块

3. JSON转换

在网页的异步数据中,通常会碰到 Json 格式的字符串,这一点是比较简单的。

调用:import json json是python的内置库

示例:

import json
dict_obj = json.loads("这里放json格式的字符串")
# json.loads() 返回的结果是Python的字典,所以操作方便

语法介绍:无【字典操作太简单了,不做介绍】

但是,异步加载虽然是 json 居多,但是jsonp也是有的

何为 jsonp ?这个由来就能聊很久了

简单来说,浏览器有防跨域请求的,这是为了安全着想;但是这一棒子打死了全部的跨域请求,我要是正常请求怎么办?

答:用jsonp就可以

jsonp的数据格式,和json很像,就是在json的基础之上,套上一个函数的壳,例如:

json_str = '{"method":"get"}'
jsonp_str = '''functionName({"method":"get"});'''

jsonp的字符串,就是json的字符串套了个javascript的函数。

原来如此,不难,那怎么解析呢?

答:使用正则,取出函数内json字符串,再用json转换就可以了

示例:

import json, re
pattern_str = "{.*?}"
result = re.search(pattern_str, “jsonp字符串”)
dict_obj = json.loads(result[0])

效果图如下:

1.png

以上就是本篇文章的全部介绍内容了


!放在最后

如果文章中有什么错误或者建议修改的地方,欢迎留言纠正和回复

如果你喜欢本篇文章,不妨关注一下我们的公众号,每周更新两篇原创技术文档,都是干货

wxgzh1.png

相关文章

  • 【编号0004】爬虫中常用到的数据提取手段

    使用爬虫抓取网上公开的网页数据时,经常需要使用各种技能去解析到手的响应。 本篇文章,重点介绍下,数据提取时,有哪些...

  • golang:xpath选择器htmlquery简单用法

    在做爬虫时,经常要用到html解析器提取数据,Python里面有神器lxml,go里面可以选择htmlquery或...

  • python-爬虫

    初识爬虫 网页基础 BeautifuleSoup 解析数据 提取数据 Tag 对象 CSS选择器 爬虫进阶

  • 新奇!pandas爬虫?

    众所周知,一般的爬虫套路无非是构造请求、解析网页、提取要素、存储数据等步骤。构造请求主要用到requests库,提...

  • Python爬虫(九)_非结构化数据与结构化数据

    爬虫的一个重要步骤就是页面解析与数据提取。更多内容请参考:Python学习指南 页面解析与数据提取 实际上爬虫一共...

  • 爬虫基础系列urllib——构造请求头(3)

    爬虫与反爬虫 爬虫:自动获取网站数据的程序 反爬虫:使用技术手段防止爬虫程序爬取数据 反扒机制1 判断用户是否是浏...

  • 网络爬虫入门(二)之爬虫的原理

    在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基...

  • 爬虫的基本原理

    在上文中我们说了:爬虫就是请求网站并提取数据的自动化程序。其中请求,提取,自动化是爬虫的关键!下面我们分析爬虫的基...

  • 爬虫的概念

    爬虫是模拟浏览器发送请求,获取响应 爬虫的流程 url--->发送请求,获取响应--->提取数据---》保存数据 ...

  • 档案编号:0004

    相逢何必曾相识 白云伴随着秋风,时间一晃眼来到了圣诞节的前后。此时的曹佳梦已经大学毕业了许久,在找到了一份合适的工...

网友评论

    本文标题:【编号0004】爬虫中常用到的数据提取手段

    本文链接:https://www.haomeiwen.com/subject/ndodrctx.html