爬虫数据提取方法详解(一)
爬虫中数据的分类:结构化数据(json,xml等)处理方式是直接转化为python类型,jsonpath,xpath,bs4等.
非结构化数据(HTML)处理方式是正则表达式,xpath,bs4等.
数据提取之json: json是一种轻量级的数据交换格式,他使得人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台直接的数据交互。以下举例。
import json
mydict = {"store":{"book":[{"category":"reference","author":"Nigel Rees","title":"Saying of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.09},],}
}
# json.dumps 实现python类型转化为json字符串
# indent实现换行和换格
# ensure_ascii = Flase 实现让中文写入的时候保持为中文
json_str = json.dumps(mydict,indent=2,ensure_ascii=False)
print('json.dumps python_type-->json_str: {}'.format(type(json_str)))# json.loads 实现json字符串转化为python的数据类型
my_dict = json.loads(json_str)
print('json.loads json_str-->python_type: {}'.format(type(my_dict)))# json.dump 实现把python类型写入类文件对象
with open("json模块示例文件.txt", "w") as f:json.dump(mydict, f, ensure_ascii=False, indent=2)
input('json.dump 已成功写入文件')# json.load 实现类文件对象中的json字符串转化为python类型
with open("json模块示例文件.txt", "r") as f:my_dict = json.load(f)print('json.load 读取文件--> {}: {}'.format(type(my_dict), my_dict))
jsonpath介绍: 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。
jsonpath 对于 JSON 来说,相当于 XPath 对于 XML。
我们以拉勾网城市JSON文件 http://www.lagou.com/lbs/getAllCitySearchLabels.json 为例,获取所有城市的名字的列表,并写入文件。
import requests
import jsonpath
import json# 获取拉勾网城市json字符串
url = 'http://www.lagou.com/lbs/getAllCitySearchLabels.json'
headers = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"}
response =requests.get(url, headers=headers)
html_str = response.content.decode()# 把json格式字符串转换成python对象
jsonobj = json.loads(html_str)# 从根节点开始,获取所有key为name的值
citylist = jsonpath.jsonpath(jsonobj,'$..name')# 写入文件
with open('city_name.txt','w') as f:content = json.dumps(citylist, ensure_ascii=False)f.write(content)
数据提取之正则
正则:用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。
正则表达式常见用法:
re模块常见方法:
- re.match(从头找一个)
- re.search(找一个)
- re.findall(找所有)
- 返回一个列表,没有就是空列表
re.findall("\d","chuan1zhi2") >> ["1","2"]
re.sub(替换)
re.sub("\d","_","chuan1zhi2") >> ["chuan_zhi_"]
re.compile(编译,提升匹配速度)
- 返回一个模型P,具有和re一样的方法,但是传递的参数不同
匹配模式需要传到compile中
p = re.compile("\d",re.S) p.findall("chuan1zhi2")
爬虫数据提取方法详解(一)相关推荐
- 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...
- Python爬虫教程-Python爬取股票数据过程详解
这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...
- python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...
- python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...
- python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...
- Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!
文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...
- 为什么写《大数据架构详解》这本书
花了差不多一年半时间,牺牲了每个周末,费了九牛二虎之力,终于完成个人人生的第一本书<大数据架构详解:从数据获取到深度学习>.整个过程其实挺痛苦的,时常想放弃,幸好坚持下来了. 回想这我50 ...
- 爬虫之Xpath详解
爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素, ...
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
[索引页] [源码下载] 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 作者:webabcd 介绍 Silverlight 2.0 详解DataG ...
最新文章
- ios自动布局(1)
- c语言中非法使用void类型_C语言中的数据类型
- 你花了多久弄明白架构设计?kafka日志清理
- window设置快捷键左右方向键
- 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
- 常用的前端跨域的几种方式
- smb服务器速度测试_通过 SMB 直通优化文件服务器的性能 | Microsoft Docs
- foreach循环符合就不往下走了_游泳池循环方式及循环周期
- 用GridView实现SPListItemCollection翻页
- 龙将加速浏览器_《使命召唤16》及战区迎来万圣节限时活动,迅游加速器助力流畅体验 18183手机游戏网...
- python处理excel表格-如何用python处理excel表格
- BigInteger类
- eth转入地址_ETH智能合约靶机 审计学习攻略
- scrapy 使用无忧代理IP 需要填写无忧代理IP提供的API订单号(请到用户中心获取) 这个是要钱吗??...
- rails 分页 Paging kaminari
- 神奇代码岛BOX获500万美元天使轮融资 构建编程少年元宇宙
- cad怎么将图层后置_Auto CAD2014图层后置快捷键是什么啊?
- windows11账户登录不上去怎么办?
- Windows远程连接电脑宿主机,管理服务器的几种快捷方式。
- Yapi idea插件使用