requests库几个demo

demo1 网页采集器

在这里插入图片描述
在这里插入图片描述

import requests
url='https://www.baidu.com/s'
#对于url携带的参数:post请求封装到data字典里,get请求封装到params字典里。
#有一些参数是可有可无的,可以不必理会。
s=input('请输入查询内容:')
#url的参数
param={
    'ie': 'UTF-8',
    'wd': s
}
#header是UA伪装,伪装成浏览器。
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'}
#发起请求
r=requests.get(url,params=param,headers=header)
#将请求来的数据存入文件
filename=s+'.html'
with open(filename,'w',encoding='utf-8') as f:
    f.write(r.text)
print(filename,'保存成功!')

在这里插入图片描述
生成的html代码文件:
在这里插入图片描述
通过浏览器打开后显示如下:
在这里插入图片描述
同样的,我们可以输入别的词汇进行尝试。
在这里插入图片描述
在这里插入图片描述

demo2 百度翻译

Ajax请求:
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

局部页面刷新
在这里插入图片描述
从而确定目标 ==>捕获对应的Ajax请求
在这里插入图片描述

import requests
import json
#指定url
url='https://fanyi.baidu.com/sug'
#参数
s=input('请输入要查询的单词:')
dat={
    'kw': s
}
#UA伪装
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'}
r=requests.post(url=url,data=dat,headers=header)
#只有确认响应数据是json类型的,才可以使用json()
print(r.json())     #返回一字典数据

#存储json文件
# fp=open(filename,'w',encoding='utf-8')
# json.dump(r.json(),fp=fp,ensure_ascii=False)   #将r.json()数据存入文件fp中
# fp.close()

在这里插入图片描述

demo3豆瓣分类排行榜中数据

页面同样是一个Ajax请求。局部页面刷新

demo4药监总局

网页信息:(其中每个企业的名字都是一个链接,链接里是企业的详情数据)
在这里插入图片描述

Target: 得到所有企业的这些数据
在这里插入图片描述

我们需要得到所有这些企业的 < a href > 链接标签

我们又知道这些企业的名单信息还有< a href >标签都不能通过直接请求页面的 url 得到,都是动态加载数据。如:
直接请求页面信息:
在这里插入图片描述
在这里插入图片描述

其中并没有企业名单信息,因为他们都是动态加载数据。需要在XHR里边找。
在这里插入图片描述
找到其对应的数据:
在这里插入图片描述
由这些数据,我们可以得到这些企业的链接的一些参数 id 。

import requests
import json
#指定url
url='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
#参数
dat={
'on': 'true',
'page': 1,
'pageSize': 15,
'productName':'',
'conditionType': 1,
'applyname':'',
'applysn':''
}
#UA伪装
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'}
r=requests.post(url=url,data=dat,headers=header)
link_data=r.json()              #得到链接数据,返回的是一个字典类型

id_list=[]          #存储企业的id信息
for i in link_data['list']:     #i对应的列表的每一个元素都是一个字典
    id_list.append(i['ID'])     #将所有的id信息都存储起来

for i in id_list:               #将所有企业的id信息打印出来
    print(i)
    

其中, r. json()数据就是:
在这里插入图片描述
在这里插入图片描述

运行得到如下结果:
在这里插入图片描述
要的企业详情页数据同样也是一个动态加载数据:
在这里插入图片描述
在这里插入图片描述

#通过id信息来爬取数据
data_list=[] #所有企业的详情页数据
url2='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
for i in id_list:
    data={
        'id':i
    }
    r2=requests.post(url2,data=data,headers=header)
    #data_list.append(r2.json())    #将每家企业的详情页数据都存到data_list列表里。
    print(r2.json())

#持久化存储
# fp=open(filename,'w',encoding='utf-8')
# json.dump(data_list,fp=fp,ensure_ascii=False)
# fp.close()

在这里插入图片描述
最终得到了所有企业的详情页数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值