Request Python 使用实例 get post

Request

requests模块

  • urllib模块
  • requests模块

requests模块:python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率杉作用:模拟浏览器发请求。

使用方式(requests模块的编码流程):

  • 指定url
  • 发起请求
  • 获取响应数据一持久化存储

环境安装:pip install requests

常规流程
import requests
# 指定url
url = 'https://cn.bing.com/'
# 发起请求
r = requests.get(url)
# 获取相应数据
page_data = r.text
print(page_data)
# 数据存储
with open('./bing.html','w',encoding='utf-8') as f:
    f.write(page_data)

实战巩固

获取指定词条对应的搜索结果页面(简易网页采集器)
  • UA:UserAaent(请求载体的身份标识)
    • UA伪装:门户网站的服务器佘检测对应请求的载体身份标识。如果检测到请求的载体身份标识不是浏览器一般拒绝访问,我们可以修改UA让服务器认为
def getdata(keyword):
    # 指定url https://cn.bing.com/search?q=
    url = f'https://cn.bing.com/search?'
    # UA伪装
    headers = {
    
    
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29"
    }
    #处理url所带的参数,封装到字典
    param = {
    
    
        'q':keyword
    }
    # 发起请求,带3参数
    r = requests.get(url = url,params=param,headers = headers)
    # 获取相应数据
    page_data = r.text
    print(page_data)
    # 数据存储
    with open(f'{
      
      keyword}.html','w',encoding='utf-8') as f:
        f.write(page_data)

if __name__ == '__main__':
    keyword = input("输入想要搜索的内容")
    getdata(keyword)
破解百度翻译
  • 其信息由ajax请求得到,动态获取,同样发送请求

  • 在这里插入图片描述

  • 在这里插入图片描述

import requests

def getdata(keyword):
    # 指定url https://cn.bing.com/search?q=
    post_url = 'https://fanyi.baidu.com/sug'
    # UA伪装
    headers = {
    
    
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29"
    }
    #处理url所带的参数,封装到字典
    data = {
    
    
        'kw':keyword
    }
    # 发起请求,带3参数
    r = requests.post(url = post_url,data=data,headers = headers)
    # 获取相应json格式数据
    jsdata = r.json()
    print(jsdata)
    # 数据存储
    with open(f'{
      
      keyword}.json','w',encoding='utf-8') as f:
        json.dump(jsdata,fp=f,ensure_ascii=False)


if __name__ == '__main__':
    keyword = input("输入想要翻译的内容")
    getdata(keyword)
获取豆瓣电影分类排行榜中的电影详情数据
  • 通过请求后端接口而非网页获取返回的json列表

  • 在这里插入图片描述

  • 在这里插入图片描述

import json
import requests


def getdata():
    # 指定url 请求网址: https://movie.douban.com/j/chart/top_list?type=4&interval_id=100%3A90&action=&start=0&limit=1
    post_url = 'https://movie.douban.com/j/chart/top_list'
    # UA伪装
    headers = {
    
    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29"
    }
    # 处理url所带的参数,封装到字典 type类型 4为历史 start获得元素起始点 limit限制,相当于获取元素终点
    param = {
    
    
        'type': 4,
        'interval_id': '100:90',
        'action': '',
        'start': 0,
        'limit': 20
    }
    # 发起请求,带3参数
    r = requests.get(url=post_url, params=param, headers=headers)
    # 获取相应json格式数据
    lidata = r.json()
    print(lidata)
    # 数据存储
    with open('douban.json', 'w', encoding='utf-8') as f:
        json.dump(lidata, fp=f, ensure_ascii=False)


if __name__ == '__main__':
    getdata()
获取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据
  • 本页面的数据是动态加载出来的,不能直接通过url请求得到,由Ajax请求得到

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 而企业的详情界面http://scxk.nmpa.gov.cn:81/xk/itownet/portal/dzpz.jsp?id=af4832c505b749dea76e22a193f873c6中id值恰为json中返回的id值

  • 发送ajax请求时附带的表单数据

    • 在这里插入图片描述
import json
import requests


def getdata():
    # 指定url 请求网址: http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList
    post_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
    # UA伪装
    header = {
    
    
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29"
    }
    listid = []
    msges = []
    # 设置翻页
    for page in range(1,6):
        # 处理url请求附带的表单数据
        data = {
    
    
            'on': 'true',
            'page': page,
            'pageSize': '15',
            'productName': '',
            'conditionType': '1',
            'applyname': '',
            'applysn': ''
        }
        # 发起请求,带3参数
        r = requests.post(url=post_url, headers=header,data=data)
        # 获取相应json格式数据,返回的是一个字典形式
        dictdata = r.json()
        # 从字典中取出list企业列表对应的值
        lidata = dictdata['list']
		# 从企业列表列表中选出ID
        for item in lidata:
            listid.append(item['ID'])
        print(listid)

    for id in listid:
        # 指定url 请求网址: 请求网址: http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById
        post_url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
        # 表单数据
        data = {
    
    
            'id': id
        }
        # 发起请求,带3参数
        msg = requests.post(url=post_url, headers=header, data=data).json()
        print(msg)
        msges.append(msg)

    with open("企业.json",'w',encoding='utf-8') as f:
        json.dump(msges,fp = f,ensure_ascii=False)
        
        
if __name__ == '__main__':
    getdata()

猜你喜欢

转载自blog.csdn.net/m0_46530662/article/details/121552977