• python爬虫添加请求头和请求主体


    添加头部信息有两种方法

    1.通过添加urllib.request.Request中的headers参数

     1 #先把要用到的信息放到一个字典中
     2 headers = {}
     3 headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) .......'
     4 headers['......'] = '........'
     5 
     6 #提交的主体信息,可以使用windows的浏览器找出来,以字典的形式写出来
     7 data = {}
     8 data['eng'] = '0'  #1:英->汉  0:汉->英
     9 data['validate'] = ''
    10 data['ignore_trans'] = '0'
    11 
    12 #将携带的数据转换成请求方法的对应类型
    13 reqdata = urllib.parse.urlencode(data).encode('utf-8')
    14 
    15 #生成一个请求报文,这里的url和data需要提前给定 
    16 req = urllib.request.Request(url,reqdata,headers) 
    17 
    18 #使用这个报文去请求网页,这时请求的报文中就带有浏览器标识了
    19 html = urllib.request.urlopen(req).read()

    2.通过urllib.request.Request的add_header方法添加

    1 #生成请求报文,这里先不加入header参数
    2 req = urllib.request.Request(url,reqdata)
    3 
    4 #通过返回的请求对象添加header头,这里是个元祖,不是字典
    5 req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64)')
    6 
    7 #这时再去请求就是带有浏览器标识的报文了
    8 html = urllib.request.urlopen(req).read()

    360翻译示例代码: 

     1 import urllib.request
     2 import chardet
     3 import urllib.parse
     4 import json
     5 
     6 #请求url路径,这个是360翻译
     7 url = 'https://fanyi.so.com/index/search?eng=0&validate=&ignore_trans=0&query=%E5%8E%86%E5%8F%B2%0A'
     8 #这里只写了个浏览器标识
     9 headers = {}
    10 headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    11 #提交的请求主体信息
    12 data = {}
    13 data['eng'] = '0'  #1:英->汉  0:汉->英
    14 data['validate'] = ''
    15 data['ignore_trans'] = '0'
    16 while True:
    17     str = input("请输出要翻译的中文(输入q退出):") #要查询的内容
    18     if str == 'q':
    19         break
    20     else:
    21         data['query'] = str
    22 
    23 
    24     #将携带的数据转换成请求方法的对应类型
    25     reqdata = urllib.parse.urlencode(data).encode('utf-8')
    26     #把url、data、header封装成一个请求
    27     req = urllib.request.Request(url,reqdata,headers)
    28     #提交请求
    29     response = urllib.request.urlopen(req)
    30     #获取返回页面内容
    31     html = response.read()
    32     #将返回的页面进行解码,可以使用chardet.detect(html)查看页面编码
    33     # print(type(html)) 可以这样打印,判断出页面的类型是什么,好进行下一步的转码
    34     # print(isinstance(html,bytes))
    35     html = html.decode('ascii')
    36     #html为json格式,转换成字典类型
    37     html = json.loads(html)
    38     #提取出翻译的字段
    39     translation = html['data']['fanyi']
    40 
    41     print(translation)
    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    Finalize,Dispose,SuppressFinalize
    防火防盗防微软,Firefox发布插件自动检测服务
    Nginx的Rewrite设置及示例
    Linux游戏开发包 ClanLib 2.1.0 发布
    HTTP协议详解(真的很经典)
    Linux on POWER:发行版迁移和二进制兼容性考虑事项
    映射网络驱动器VBS脚本
    [笔记] 使用 opcache 优化生产环境PHP
    2020最新版MySQL数据库面试题(三)
    请注意,面试中有这7个行为肯定会被拒绝!
  • 原文地址:https://www.cnblogs.com/forlive/p/11307946.html
Copyright © 2020-2023  润新知