# 需求:爬取国家药品监督管理总局基于中华人民共和国化妆品生产许可证相关数据
# 动态加载数据 首页中对应的企业信息是通过ajax动态请求得到的
# 通过对详情页url的观察发现:
# 1、url的域名都是一样的,只有携带的参数不一样
# 2、id值可以从首页对应的ajax请求到的json串中获取
# 3、域名和id值拼接可以得到一个完整企业对应的详情页url
# 详情页的企业数据也是动态加载出来的
# http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById
# 观察后发现:1、所有的post请求的url都是一样的,只有参数id是不一样的
# 2、如果我们可以批量获取多家企业的id后,就可以将id和url进行拼接形成一个完整的的详情页对应的详情数据
# import requests
# import json
# if __name__=='__main__':
#
#
# url='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
# headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/53'}
#
# param={'on': 'true',
# 'page': 1,
# 'pageSize': 15,
# 'productName': '',
# 'conditionType': 1,
# 'applyname':'',
# 'applysn':'' }
# response=requests.post(url=url,data=param,headers=headers)
# response_json=response.json()
# id_list=[]
# for dic in response_json['list']:
# id_list.append(dic['ID'])
# # 批量获取企业id的值
# # print(id_list)
# post_url='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
# all_data_list=[]
# for id in id_list:
# data={
# 'id':id
# }
# response_post=requests.post(url=post_url,data=data,headers=headers)
# response_post_json=response_post.json()
# all_data_list.append(response_post_json)
# fp=open('./all.json','w',encoding='utf-8')
# json.dump(all_data_list,fp=fp,ensure_ascii=False)
# print('everything is ok')
# # print(response_post_json)
# 需求:爬取糗事百科中糗图板块下所有糗图图片
import requests
if __name__=='__main__':
url='https://ss2.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/4b90f603738da9779423e004b751f8198618e395.jpg'
image_data=requests.get(url=url).content
# text用来获取字符串 content 二进制 json 对象
with open('./dog.jpg','wb') as fp:
fp.write(image_data)
正则解析案例
import requests import os import re if __name__=='__main__': if not os.path.exists('./qiutulib'): os.mkdir('./qiutulib') url='http://www.qiutubaike.com/pic/' headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/53'} # 使用通用爬虫对url对应的一整张页面进行爬取 response_text=requests.get(url=url,headers=headers).text # 使用聚焦爬虫将页面中所有糗图进行解析 ex='<div class="thumb">.*?<img src="(.*?)"alt.x*?<\div>' image_list=re.findall(ex,response_text,re.S) for src in image_list: src='https'+src # 拼接出一个完整的图片url image_data=requests.get(url=src,headers=headers).content # 请求到了图片的二进制数据 # 获取图片的名字 image_name=src.split('/')[-1] # 图片的存取路径 image_path='./qiutulib'+image_name with open(image_path,'wb') as fp: fp.write(image_data) print('ok')