python爬虫将js转化成json实现示例

作者:ponponon 时间:2021-10-20 15:32:31 

有一个优秀的库可以使用————demjson

示范链接

http://fcd.5173.com/commondat...

请求上面链接,会得到如下图的一个js文件

python爬虫将js转化成json实现示例

我们需要把这个js文件转成为dict,方便提取其中需要的字段(这在爬虫任务中非常常见)

失败的方法

传统方法

通常转js文件为dict的过程:

1.先通过切片掐头去尾,去掉头部的 “callarea(” 和尾部的 “)” 。

2.再次导入json这个库,使用loads,json.loads(resposne.text[9:-1]),实现json转dict。

但是,这个方法在这里行不通。

import requests
import json
url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'
headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',
}
resposne = requests.get(url, headers=headers)
print(json.loads(resposne.text[9:-1]))

python爬虫将js转化成json实现示例

错误原因

js文件并不一定是json的超集,这此处的js文件key不包含双引号,value中的内容是单引号。

上诉方法行得通的前提是这个js需要时json的超集,key和value都由双引号包围。

天无绝人之路

通过demjson可以一步到位

import requests
import demjson
url = 'http://fcd.5173.com/commondata/Category.aspx?type=area&cache=&id=20c8bbc1b9794fc98bd96859624d4769&jsoncallback=callarea'
headers = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36',
}
resposne = requests.get(url, headers=headers)
for item in demjson.decode(resposne.text[9:-1]):
   id = item.get('id')
   name = item.get('name')
   print(id, name)

得到如下结果

python爬虫将js转化成json实现示例

写代码千万不要睡着了

来源:https://segmentfault.com/a/1190000020981610

标签:python,js,json,爬虫
0
投稿

猜你喜欢

  • Python实现多属性排序的方法

    2021-03-11 02:13:57
  • Python 字典与字符串的互转实例

    2023-06-27 07:51:22
  • Python实现Restful API的例子

    2023-03-23 18:28:10
  • python使用原始套接字发送二层包(链路层帧)的方法

    2022-06-30 04:14:48
  • sqlserver主键自增的实现示例

    2024-01-16 22:41:10
  • Django框架ORM数据库操作实例详解

    2024-01-24 00:23:33
  • SQL Server 2005 Management Studio Express企业管理器将英文变成简体中文版的实现方法

    2024-01-27 23:35:38
  • UTF-8 编码中BOM的检测与删除

    2022-06-04 07:44:16
  • 详解MySQL下InnoDB引擎中的Memcached插件

    2024-01-24 22:02:35
  • MySQL按小时查询数据,没有的补0

    2024-01-18 00:55:30
  • OpenCV+face++实现实时人脸识别解锁功能

    2023-03-17 20:10:19
  • Python探索之ModelForm代码详解

    2022-05-16 06:14:33
  • 基于PyQt5自制简单的文件内容检索小工具

    2023-06-11 19:45:03
  • 用python实现读取xlsx表格操作

    2022-11-26 17:08:19
  • ASP编写计数器的优化方法

    2009-01-21 19:46:00
  • 深入了解Golang的指针用法

    2024-05-21 10:22:58
  • js更好地截取字符串

    2008-03-11 19:00:00
  • Python 3.7新功能之dataclass装饰器详解

    2023-09-13 16:32:38
  • python pycharm最新版本激活码(永久有效)附python安装教程

    2022-08-16 14:08:56
  • jupyter notebook保存文件默认路径更改方法汇总(亲测可以)

    2023-01-12 09:05:07
  • asp之家 网络编程 m.aspxhome.com