前言:

ONE中了解了爬虫和requests模块的基本使用,这次就来跟着老师来做一个综合性的案例

0x00:案例说明

这次要爬取的是化妆品企业具体的生产许可信息

0x01:进行分析

首先要判断这个页面出现的企业的信息是否是动态加载出来的还是随着该url直接出现的

可以F12查看一下也可以写一个py脚本爬取一下
捕获到了该页面的数据,可以查询一下企业名称是否在该数据中即可验证信息是通过何种方式加载的

查询企业名称是没有的,说明该页面的信息数据是通过动态加载出来即(Ajax

那我们就捕获一下Ajax请求
果然是动态加载出来的

可以看到参数等,这里就先总结一下查到的信息

#页面信息通过动态加载出来
Request URL: http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList
Request Method: POST
Content-Type: application/json;charset=UTF-8

既然这个页面信息我们已经分析好了,那接下来就看公司的具体许可信息,随便点进去一个,看到有如下信息

这里还需要进行分析一下,信息是通过该链接直接呈现出来了还是通过动态加载出来的,方法和刚才分析首页一样,我这里就直接查看Ajax请求,发现确实有

查看一下,参数只有id一个

多试几个企业便会发现这个url是不变的,唯一变的便是参数id

到这里为止,再统计一下该页面查到的信息

#信息也是通过动态加载出来的
Request URL: http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById
Request Method: POST
Content-Type: application/json;charset=UTF-8

分析过后,就来写出爬取代码

0x02:进行爬取

先将首页的json串格式化一下,便于观看

格式化后,发现是一个字典,llist是一个列表,列表中又包含字典,便可以遍历value值,从而可以得到ID值
这个时候我们收集的信息就要用到了

import requestsif __name__ == '__main__':#首页url,用于获取企业ID号url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA伪装headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#导入参数data = {'on': 'true','page': '1','pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#建立一个空列表永远存储ID值id_message = []#发起请求message = requests.post(url=url,data=data,headers=headers).json()#数据是一个字典,而list的value值中包含ID值,所以需要从value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])print(id_message)

爬取后就会发现这样就可以得到这一页所有企业的ID

那么ID拿到了,企业的具体许可信息便可以通过ID的来展示出来

import requests
import json
if __name__ == '__main__':url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA伪装headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}#导入参数data = {'on': 'true','page': '1','pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#建立一个空列表永远存储ID值id_message = []#建立一个存储企业详细信息的列表all_date = []#发起请求message = requests.post(url=url,data=data,headers=headers).json()#数据是一个字典,而list的value值中包含ID值,所以需要从value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])#根据ID号获得企业的详细数据date_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'#遍历ID列表for id in id_message:datas = {'id': id}detail_message = requests.post(url=date_url,data=datas,headers=headers).json()# print(detail_message)#列表中存储all_date.append(detail_message)#存储到本地fp = open('message.txt','w',encoding='utf-8')json.dump(all_date,fp=fp,ensure_ascii=False,indent=4)print("爬取成功咯")


这样就爬取成功了,如果想要爬取更多页面也不麻烦只需将'page': '1'这个参数设置为动态即可

0x03:最终代码

import requests
import json
if __name__ == '__main__':url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'#UA伪装headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}# 建立一个空列表永远存储ID值id_message = []# 建立一个存储企业详细信息的列表all_date = []#查询多页数据,添加一个循环即可for page in range(1,3):#转换为字符类型page = str(page)#导入参数data = {'on': 'true','page': page,'pageSize': '15','productName':'','conditionType': '1','applyname':'','applysn':'',}#发起请求message = requests.post(url=url,data=data,headers=headers).json()#数据是一个字典,而list的value值中包含ID值,所以需要从value值中取出ID值for dict in message['list']:id_message.append(dict['ID'])#根据ID号获得企业的详细数据date_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'#遍历ID列表for id in id_message:datas = {'id': id}detail_message = requests.post(url=date_url,data=datas,headers=headers).json()# print(detail_message)#列表中存储all_date.append(detail_message)#存储到本地fp = open('message.txt','w',encoding='utf-8')json.dump(all_date,fp=fp,ensure_ascii=False,indent=4)print("爬取成功咯")

爬取的信息

总结:

这次通过案例的训练,掌握了分析方法,接下来学习数据解析

继续加油,向着优秀的方向前进!!

Python爬虫之旅_TWO相关推荐

  1. Python爬虫之旅_ONE

    前言: 最近学习了python的一些基础语法,又跟着廖雪峰老师用异步IO框架搭建了一个简易的网站(虽然有的现在还不懂)不过慢慢来,python还有一个好玩的地方是可以写爬虫,趁着现在有充裕的时间就来学 ...

  2. Python爬虫之旅_高性能异步爬虫

    0x00:异步爬虫概述 目的:在爬虫中使用异步实现高性能的数据爬取操作. 先来看一个单线程.串行方式的爬虫: import requests headers = {'User-Agent':'xxx' ...

  3. Python爬虫之旅_(数据解析)_bs4

    前言: 这次来学习数据解析这方面的知识! 0x00:了解数据解析 在ONE那一篇中,就提到过聚焦爬虫(爬取页面中指定内容),大部分的爬虫都是聚焦爬虫,但我们刚开始爬取的肯定都是整个页面的数据,如何定位 ...

  4. Python爬虫之旅_(数据解析)_正则

    前言: 正则表达式有时在写脚本很方便,记录一下自己的学习过程! 正则练习 import re # key = 'shy lemon' #输出lemon # test = re.findall('lem ...

  5. Python爬虫之旅_(数据解析)_Xpath

    前言: 上次学习过了BeautifulSoup进行解析的,这次就来学习一下Xpath进行解析 0x00:了解Xpath Xpath解析:最常用且最高效的一种解析方式 Xpath解析原理:--1.实例化 ...

  6. python微信爬取教程_PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台一】...

    感谢大家的等待,好啦,都准备好瓜子.板凳,老司机要发车啦-- 本系列课程讲述"PYTHON爬虫之旅",具体大纲可参考:[PYTHON爬虫之旅]概要目录. 本节课讲述如何利用Pyth ...

  7. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

  8. 外星人颜色python练习_在知乎上学Python爬虫

    有很多人正在入门Python爬虫,学习Python爬虫.在这个过程中,会遇到很多难题,许多小伙伴都会去寻找答案,但是因为答案的纷繁复杂和种类多样,往往要花上好些时间. 而码不理经常会在知乎上寻找学习问 ...

  9. 1000行代码入门python-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

最新文章

  1. greta的问题及解决: LIBCMTD.lib(_wctype.obj) : error LNK2005: _iswspace already defined in xxx.obj...
  2. 简介 NetWeaver Application Server 的三层架构
  3. 猫眼娱乐2020年上半年交出最差答卷,下半年能满血复活吗?
  4. <马哲>不变资本与可变资本及其划分意义2017-12-26
  5. IntelliJ IDEA使用教程(非常全面)
  6. makefile运行_NVDIA TX2入门 系列之三:运行Yolov3
  7. 一个 wince 开发经验的杰出blog
  8. PAT1021. 个位数统计
  9. fastjson.JSONObject之对象与JSON转换方法
  10. 催化剂概念在管理领域的应用——来自项目管理群的讨论
  11. mysql事务保证幂等_事务与一致性:刚性or柔性
  12. C# 使用JSON对数据序列化和反序列化.
  13. Java从入门到精通章节练习题——第三章
  14. 新浪微博平台的多级架构
  15. flash AS3常用公式
  16. CAD属性编辑操作——快速选择
  17. mac 删除系统应用
  18. 阿里云ECS共享型n4服务器1核2G配置性能评测
  19. 阿里、华为领跑2019中国公有云物联网平台
  20. 多普达与O2之间的关系

热门文章

  1. dns设置服务器版本信息,DNS设置方法
  2. airflow sql_alchemy_conn mysql_搭建AirFlow—— 一段波折后的总结
  3. 十五、JavaScript进度条的制作
  4. Vue 学习第四天--第一部分 --盲点整理与昨天知识回顾
  5. AI安检:北航提出安检场景下的危险品检测基准和去遮挡注意力模块
  6. 科研实习 | 北京大学计算机学院杨智老师组招收系统方向科研实习生
  7. Self-Attention GAN 中的 self-attention 机制
  8. F-Principle:初探深度学习在计算数学的应用
  9. POJ2318 TOYS / POJ2398Toy Storage判断点与直线位置关系 【计算几何】
  10. 吉林省计算机等级二级,吉林省2019年9月计算机等级二级考试教程:二级MSOffice高级应用上机指导...