python爬虫将js转化成json实现示例
作者:ponponon 发布时间:2021-10-20 15:32:31
标签:python,js,json,爬虫
有一个优秀的库可以使用————demjson
示范链接
http://fcd.5173.com/commondat...
请求上面链接,会得到如下图的一个js文件
我们需要把这个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]))
错误原因
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)
得到如下结果
写代码千万不要睡着了
来源:https://segmentfault.com/a/1190000020981610
0
投稿
猜你喜欢
- 今天彬Go要向大家推荐9款很棒的可在网页中绘制图表的JavaScript脚本,这些有趣的JS脚本可以帮助你快速方便的绘制图表(线、面、饼、条
- 注:本文以Windos系统上Go SDK v1.17.5进行讲解1.go build命令2.手动案例2.1新建文件在桌面新建一个文件夹Hel
- 一、python的基础语法1.行连接的方法是最后加上一个‘\'2.注释:多行注释三引号,#行注释;三引号定义的字符串原样输出(保存原
- 在使用jQuery类库实现tab功能时,是获取鼠标在mousenter或click时的index值,然后切换到当前的标题和内容,把其他的标题
- 1. 简介本文将介绍Go语言中实现请求的超时控制的方法,主要是通过timer和timerCtx来实现请求的超时控制。但是在本文中,暂未展示在
- 安装方法一:①进入python文件夹执行指令(前提是支持pip指令):pip3 install Beautifulsoup4②回车待安装完成
- 1. 引入mybatis-plus相关包,pom.xml文件2. 配置文件application.property增加多库配置mysql 数
- 装饰器本质是一个接受参数为函数的函数。作用:为一个已经实现的方法添加额外的通用功能,比如日志记录、运行计时等。举例1.不带参数的装饰器,不用
- 本文为大家分享了python查看微信消息撤回的具体代码,供大家参考,具体内容如下1.安装itchatitchat是一个开源的python微信
- 本是一个自己知道的问题,还是差点踩坑(差点忘了,还好上线前整理上线点时想起来了),特此记录下来为什么要更新自增id我是因为历史业务上的坑,导
- 方法: 使用urlencode函数urllib.request.urlopen()import urllib.requestimport u
- 本文实例讲述了动态规划之矩阵连乘问题Python实现方法。分享给大家供大家参考,具体如下:给定n个矩阵{A1,A2,…,An},其中Ai与A
- 如题,在控制台运行python manage.py startapp sales 建立一个应用报错异常1.应用名不能包含下划线等字符 所以a
- 初学初用,随手记录以当作笔记使用,会慢慢再进行补充添加,错误之处烦请指正。(1)运行本地文件,在代码不加载的情况下可以直接显示结果% run
- 我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图。下面以识别图片中的行人,并绘制热力图为例进
- 0.先给大家看看效果:1.创建一个index.html文件<!DOCTYPE html><html lang="
- 本文实例讲述了Python实现查看系统启动项功能。分享给大家供大家参考,具体如下:一、代码# -*- coding:utf-8 -*-#!
- PDOStatement::fetchAllPDOStatement::fetchAll — 返回一个包含结果集中所有行的数组(PHP 5
- 前言大家做开发的应该都知道,在开发程序中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写
- 一、验证计算机服务列表中是否有MySQL服务(1)右击桌面上的计算机图标出现菜单列表选项,选中管理(有多种方式可以打开计算机本地服务列表,这