python 转义字符 html 爬虫
用python的requests包 抓取某些网页时,返回的html中,一些字段含有一些 转义字符 \\\\\\\
这些转义字符给我们后期处理带来一些麻烦, 比方说 运行js等
python用print()打印时,其实已经自动处理了一边转义字符
转自 https://blog.csdn.net/shenkunchang1877/article/details/79086886
python
str = """{\\"count\\":4}""" #爬虫抓取的数据段 print(str) #这里直接输出str
>>>{\"count\":4}
str = bytes(str, encoding='utf-8') print(str) #转换成bytes输出
>>>b'{\\"count\\":4}'
print(json.loads(str)) #输出出错
>>>json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
分析:
在控制台直接print输出:{\"count\":4}这是正确的格式。按理说能正常被json解析,如下:
test2.py:
str="{\"count\":4}" print(str) print(json.loads(str))
>>>{"count":4} #直接输出,输出了不带斜杠\的字符串 >>>{'count': 4} #这里能被json正常解析
以上说明print和json.loads都会自动去掉用作转义的反斜杠 \ "转换成 " 成为正常能被json解析的(不带转义)字符 ,所以这样是能被json解析的!但是test1中的第一个print输出只是将双斜杠转成单斜杠的字符串,去掉了单斜杠的转义,这样仍然是不能被解析的。test1的第二个print说明了这个问题,转换成byte是按字节原样输出的,显示的仍然是双斜杠,所以print和loads都会解析一层的转义即:{\\"count\\":4}去掉一个单斜杠变成{\"count\":4},应该要再去掉一层转义,即需要两次反转义才行,可惜我找遍资料也没找到python有解决这个的方法函数,不过最终在网上找到了解决方法。看下面:
总结:以上问题出现在抓取的数据的时候,python会自动把反斜杠\加上转义,比如这里的 “\”单反斜杠 会变成对应的双反斜杠"\\" 即:把单斜杠给转义了。这样自然不能被json正常解析。(ps:单层转义的字符串传入json.loads()时会自动处理掉)
解决方法:
1.使用eval函数
eval
功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法: eval(source[, globals[, locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象
globals:可选。必须是dictionary
locals:可选。任意map对象
str = """{\\"count\\":4}""" str2 = eval("'{}'".format(str)) print(str2) print(json.loads(str2))
2.使用正则表达式:
str1 = re.sub(r'\\','',str) print(str1) print(json.loads(str1))
>>>{"count":4} #以上两种都能正常输出得到json数据!! >>>{'count': 4}
转载于:https://www.cnblogs.com/shidexiao/p/9629935.html
python 转义字符 html 爬虫相关推荐
- 菜鸟Python实战-03爬虫之爬取数据
最近想学习一下爬虫 所以参考了一下网上的代码,并加以理解和整理,好记性不如烂笔头吧. 以下代码的目标网站是豆瓣电影:https://movie.douban.com/top250?start=%22( ...
- Python之网络爬虫完全教程
[Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去 ...
- Python大作业——爬虫+可视化+数据分析+数据库(爬虫篇)
相关链接 Python大作业--爬虫+可视化+数据分析+数据库(简介篇) Python大作业--爬虫+可视化+数据分析+数据库(可视化篇) Python大作业--爬虫+可视化+数据分析+数据库(数据分 ...
- python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目
首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...
- python免费自学爬虫_这套Python爬虫学习教程,不到一天即可新手到进阶!免费领...
想用Python做爬虫,而你却还不会Python的话,那么这些入门基础知识必不可少.很多小伙伴,特别是在学校的学生,接触到爬虫之后就感觉这个好厉害的样子,我要学.但是却完全不知道从何开始,很迷茫,学的 ...
- python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...
原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...
- scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...
- python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...
原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面 本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 ...
- python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文
Python从零开始写爬虫-4 解析HTML获取小说正文 在上一节中, 我们已经学会如何获取小说的目录, 这一节我们将学习如何通过正则表达式(在第二节学习过)来获取小说正文. 首先, 先随便选择一个章 ...
最新文章
- php 去掉img,php怎样去掉img标签
- Kafka基本的概念
- 终于买了个Dell d400二手笔记本
- ABAP从数据库中删除行
- fwrite,fread and fprintf,fscanf的一些使用体会
- JavaScript | 声明数组并在每个循环中使用的代码
- SSIS工具的ETL过程,全量ETL和增量ETL过程教程
- Hive insert into小文件问题优化解决
- ABP .Net Core 部署到IIS 问题汇总
- python基础篇——字典
- Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决
- HTML+CSS+JavaScript实现植物大战僵尸(附演示地址)
- catalan(卡特兰数学习+应用)
- Oracle查询上周日期sql,Oracle 获取上周一到周末日期的查询sql语句
- Xcode 4.3.2 gives error “cannot use super because it is a root class”
- python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法
- 七牛云陈超受邀出席杭州西商大会,共话数字时代未来
- 网络攻击与防御——对局域网的攻击
- 高通开发系列 - network之移动网络拨号失败和netmgrd服务分析
- 【Motion builder】动作捕捉数据的基本使用方法
热门文章
- www.miibeian.gov.cn 的PageRank
- HttpClient模拟登陆
- js剪辑视频使用gif.js生成GIF效果
- 在群晖的docker中使用auska-docker-baidupcs出现下载文件错误, mkdir /mnt/: permission denied
- tensorboard无法访问:被拒绝访问的解决方法,无法访问此网站,locallost拒绝了我们的请求
- Kafka:搭建Kafka集群
- 英语学得好,月薪高出10000块?真正影响职场的能力,9成国人有欠缺!
- MYsql的enum字段报错row,SQLSTATE[01000]: Warning: 1265 Data truncated for column at row 1错误代码解决方法
- Linux中在zsh下如何安装autojump
- Android系统漏洞分析概述