用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 爬虫相关推荐

  1. 菜鸟Python实战-03爬虫之爬取数据

    最近想学习一下爬虫 所以参考了一下网上的代码,并加以理解和整理,好记性不如烂笔头吧. 以下代码的目标网站是豆瓣电影:https://movie.douban.com/top250?start=%22( ...

  2. Python之网络爬虫完全教程

    [Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去 ...

  3. Python大作业——爬虫+可视化+数据分析+数据库(爬虫篇)

    相关链接 Python大作业--爬虫+可视化+数据分析+数据库(简介篇) Python大作业--爬虫+可视化+数据分析+数据库(可视化篇) Python大作业--爬虫+可视化+数据分析+数据库(数据分 ...

  4. python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目

    首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...

  5. python免费自学爬虫_这套Python爬虫学习教程,不到一天即可新手到进阶!免费领...

    想用Python做爬虫,而你却还不会Python的话,那么这些入门基础知识必不可少.很多小伙伴,特别是在学校的学生,接触到爬虫之后就感觉这个好厉害的样子,我要学.但是却完全不知道从何开始,很迷茫,学的 ...

  6. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  7. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  8. python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...

    原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面 本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 ...

  9. python爬虫小说代码示例-Python从零开始写爬虫-4 解析HTML获取小说正文

    Python从零开始写爬虫-4 解析HTML获取小说正文 在上一节中, 我们已经学会如何获取小说的目录, 这一节我们将学习如何通过正则表达式(在第二节学习过)来获取小说正文. 首先, 先随便选择一个章 ...

最新文章

  1. php 去掉img,php怎样去掉img标签
  2. Kafka基本的概念
  3. 终于买了个Dell d400二手笔记本
  4. ABAP从数据库中删除行
  5. fwrite,fread and fprintf,fscanf的一些使用体会
  6. JavaScript | 声明数组并在每个循环中使用的代码
  7. SSIS工具的ETL过程,全量ETL和增量ETL过程教程
  8. Hive insert into小文件问题优化解决
  9. ABP .Net Core 部署到IIS 问题汇总
  10. python基础篇——字典
  11. Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决
  12. HTML+CSS+JavaScript实现植物大战僵尸(附演示地址)
  13. catalan(卡特兰数学习+应用)
  14. Oracle查询上周日期sql,Oracle 获取上周一到周末日期的查询sql语句
  15. Xcode 4.3.2 gives error “cannot use super because it is a root class”
  16. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法
  17. 七牛云陈超受邀出席杭州西商大会,共话数字时代未来
  18. 网络攻击与防御——对局域网的攻击
  19. 高通开发系列 - network之移动网络拨号失败和netmgrd服务分析
  20. 【Motion builder】动作捕捉数据的基本使用方法

热门文章

  1. www.miibeian.gov.cn 的PageRank
  2. HttpClient模拟登陆
  3. js剪辑视频使用gif.js生成GIF效果
  4. 在群晖的docker中使用auska-docker-baidupcs出现下载文件错误, mkdir /mnt/: permission denied
  5. tensorboard无法访问:被拒绝访问的解决方法,无法访问此网站,locallost拒绝了我们的请求
  6. Kafka:搭建Kafka集群
  7. 英语学得好,月薪高出10000块?真正影响职场的能力,9成国人有欠缺!
  8. MYsql的enum字段报错row,SQLSTATE[01000]: Warning: 1265 Data truncated for column at row 1错误代码解决方法
  9. Linux中在zsh下如何安装autojump
  10. Android系统漏洞分析概述