再来回顾一下爬虫的五个步骤:

  • 1.需求分析
  • 2.寻找网址
  • 3.下载网站的返回内容(需要用到:requests)
  • 4.通过网站的返回内容找到需要爬取的数据(需要用到:正则表达式re,XPATH-lxml)
  • 5.存储找到的数据内容(需要用到:MySQL)
    步骤1、2、3前面已经总结过了,这篇看看步骤4、5

步骤4:通过网站的返回内容找到需要爬取的数据

我们以百度翻译为例:

浏览器中访问百度翻译,按F12或在Fn+F12,点击Network刷新页面,点击XHR,输入**“童”,点击sug**

将Headers放大看:

上图可以看到,页面的request URL,以及请求方式为POST,而不是前面的GET,两者的区别可看前文,以及Header中增加了一项Form Data

所以我们在pycharm中练习获取百度翻译后的结果:

import requests
import json    url = "https://fanyi.baidu.com/sug"    # 页面的request URLform = {"kw":"童"}     # 请求方式为POST时,需要提交的form data# 这里需要使用POST的方法
response = requests.post(url,verify = False,data = form)# 定位数据(爬虫第四步)
print(response.text)     # 是字符串类型# json包中的函数loads可以将输入的字符串(str)转换为字典类型(dict)
json_dict = json.loads(response.text)     # 转换数据类型
print(json_dict)       # 这时就变成了dict类型translated = json_dict["data"][0]["v"]     # 就是“童”字,翻译后的结果# 爬虫的第五步,打印或者保存数据
print("翻译后的内容是: ",translated)
# 输出: 第一行是字符串类型,第二行是转换后的字典类型,第三行是结果
{"errno":0,"data":[{"k":"\u7ae5","v":"[t\u00f3ng] \u540d child; young servant; \u5f62 virgin; bald; bar"},{"k":"\u7ae5\u5e74","v":"[t\u00f3ng ni\u00e1n] childhood;"},{"k":"\u7ae5\u8bdd","v":"[t\u00f3ng hu\u00e0] children's stories; fairy tales;"},{"k":"\u7ae5\u8bdd\u6545\u4e8b","v":"fairy tale; Fairy Tales; FAIRY STORIES;"},{"k":"\u7ae5\u88c5","v":"[t\u00f3ng zhu\u0101ng] children's garments;"}]}
{'errno': 0, 'data': [{'k': '童', 'v': '[tóng] 名 child; young servant; 形 virgin; bald; bar'}, {'k': '童年', 'v': '[tóng nián] childhood;'}, {'k': '童话', 'v': "[tóng huà] children's stories; fairy tales;"}, {'k': '童话故事', 'v': 'fairy tale; Fairy Tales; FAIRY STORIES;'}, {'k': '童装', 'v': "[tóng zhuāng] children's garments;"}]}
翻译后的内容是:  [tóng] 名 child; young servant; 形 virgin; bald; bar

爬虫_4、requests的post方法以及json字符串处理相关推荐

  1. jquery parseJSON()方法解析json字符串

    在web项目开发中,前端经常需要接收后端传送来的json数据,解析json字符串,再对页面进行渲染.使用jquery解析json字符串通常需要将json字符串转化为javascript的json对象( ...

  2. 使用fastjson的parseObject方法将json字符串转换成Map 或者List

    fastjson 转换成map HashMap<String,String> map = JSON.parseObject(jsonStr,new TypeReference<Has ...

  3. 初学爬虫 request中的post方法(内含爬取金山翻译案例)

    爬虫初学 什么是BeautifulSoup? 答:BeautifulSoup是解析工具 基础爬虫遇到中文乱码问题 使用encoding = utf-8 import requestsHTML=requ ...

  4. C# 中对象与JSON字符串相互转换的三种方法

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下 ...

  5. java中将json字符串_Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  6. 【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )

    文章目录 一.使用 JsonSlurper 进行 json 字符串反序列化 二.根据 map 集合构造相关类 三.完整代码示例 一.使用 JsonSlurper 进行 json 字符串反序列化 将如下 ...

  7. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  8. C# 对象与JSON字符串互相转换的三种方式

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下 ...

  9. JavaScript解析Json字符串

    JavaScript可以解析服务器接口返回的json字符串(一般用于Ajax),而不需要json的额外支持. 在JavaScript中可以通过eval()方法将一个json字符串解析成一个JavaSc ...

  10. JavaScript学习(六十一)—json字符串的解析和JS 对象的序列化

    JavaScript学习(六十一)-json字符串的解析和JS 对象的序列化 一.json字符串的解析:parse方法 将json字符串转换为js对象,我们把这个过程称为json字符串的解析 格式:J ...

最新文章

  1. 约瑟夫环 java实现
  2. 数据结构与算法--将数组排成最小的数
  3. android计算器弹窗,android实现简易计算器
  4. sql 在某表中加入一列count所有数据_执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?...
  5. 云起作者认证大神_2020网络文学“白金大神”名单出炉!顶级作家是怎样炼成的?...
  6. error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
  7. java编程中的点_java编程中所遇到的知识点(持续更新)
  8. 雨滴式的显示图片 (cloud 转贴) (转)
  9. ICLR 2021 | 自解释神经网络—Shapley Explanation Networks
  10. 知识图谱 helloword
  11. max等聚合函数和group by搭配使用的注意事项
  12. 4、概率中的独立性和互斥性
  13. golang 设置goproxy代理的小细节,适用于go module下载超时,阿里云镜像go module下载超时
  14. 数据库oracle11g的存储结构
  15. 在UTF-8下写字库
  16. Windows10 无法识别手机MTP问题
  17. android资apk资源加密,4399游戏盒 安卓APK sign 加密分析 之 so文件分析
  18. Python3.6.8调用STK11.6仿真:从TLE文件读取某个ID号的卫星,外推星历并保存结果为*.xlsx文件
  19. 【MYSQL】大量数据入库方案
  20. 伪原创视频的处理技巧

热门文章

  1. 值得收藏!中国金融体系主要指标大全
  2. 一篇好奇心文,带你看懂基金的运营全貌
  3. 当航运遇上区块链: 有人在砸钱,有人想上车
  4. (转)知乎:如何看待巴菲特有望赢得与对冲基金 10 年赌局?
  5. 2020年容器应用的新思考
  6. 机器学习笔记(十七):交叉验证
  7. 14个阿里高管的研发管理实践和思考 | 凌云时刻
  8. 那些年,我们踩过的 Java 坑 | 凌云时刻
  9. 【单目标优化求解】基于matlab混沌算法求解单目标问题【含Matlab源码 1410期】
  10. 【通信】基于matlab GUI循环码编译码器【含Matlab源码 692期】