爬虫中数据的分类:结构化数据(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")
      

爬虫数据提取方法详解(一)相关推荐

  1. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  2. Python爬虫教程-Python爬取股票数据过程详解

    这篇文章主要介绍了基于Python爬取股票数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本环境配置 python 3.6 pycha ...

  3. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...

  4. python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  5. python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  6. Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1.网页查看 2.有道翻译简单实现源码 3.JS解密(详解) 4.python实现JS解密后的完整代码 4.1.实现效果 5.JS解密后完整代码升级版 5.1.实现效果 CSDN独家福利降临 ...

  7. 为什么写《大数据架构详解》这本书

    花了差不多一年半时间,牺牲了每个周末,费了九牛二虎之力,终于完成个人人生的第一本书<大数据架构详解:从数据获取到深度学习>.整个过程其实挺痛苦的,时常想放弃,幸好坚持下来了. 回想这我50 ...

  8. 爬虫之Xpath详解

    爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素, ...

  9. 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox

    [索引页] [源码下载] 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 详解ListBox 作者:webabcd 介绍 Silverlight 2.0 详解DataG ...

最新文章

  1. ios自动布局(1)
  2. c语言中非法使用void类型_C语言中的数据类型
  3. 你花了多久弄明白架构设计?kafka日志清理
  4. window设置快捷键左右方向键
  5. 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
  6. 常用的前端跨域的几种方式
  7. smb服务器速度测试_通过 SMB 直通优化文件服务器的性能 | Microsoft Docs
  8. foreach循环符合就不往下走了_游泳池循环方式及循环周期
  9. 用GridView实现SPListItemCollection翻页
  10. 龙将加速浏览器_《使命召唤16》及战区迎来万圣节限时活动,迅游加速器助力流畅体验 18183手机游戏网...
  11. python处理excel表格-如何用python处理excel表格
  12. BigInteger类
  13. eth转入地址_ETH智能合约靶机 审计学习攻略
  14. scrapy 使用无忧代理IP 需要填写无忧代理IP提供的API订单号(请到用户中心获取) 这个是要钱吗??...
  15. rails 分页 Paging kaminari
  16. 神奇代码岛BOX获500万美元天使轮融资 构建编程少年元宇宙
  17. cad怎么将图层后置_Auto CAD2014图层后置快捷键是什么啊?
  18. windows11账户登录不上去怎么办?
  19. Windows远程连接电脑宿主机,管理服务器的几种快捷方式。
  20. Yapi idea插件使用

热门文章

  1. 创业赚大钱者的九大综合素质
  2. [zz]基于flashplayer的视频播放优化
  3. CP2102修改设备serial、PID、VID的值
  4. ITK入门教程(9)ITK向量图像
  5. 【报错】overleaf不能成功编译中文(在线latex)
  6. eclipse使用ant_使用Eclipse简化Ant
  7. 机械清洗时洗衣液加入运作过程中大量泡沫出现洗衣液专用消泡粉
  8. Web漏洞-任意文件读取漏洞
  9. BigInteger 和BigDecimal
  10. 一个优雅的的进销存管理系统,无需编写任何代码就能增加常规功能