python通过urllib2获取带有中文参数url内容的方法

要通过urllib2库获取带有中文参数的url内容,需要注意以下几点:

  1. 中文参数需要转码为url能够识别的utf-8格式。
  2. urllib2库默认使用的User-Agent为Python-urllib/2.7,容易被服务器拦截,建议修改为浏览器的User-Agent。
  3. 使用Request对象传递参数和Header。

下面给出两个示例来说明:

示例1:获取有道翻译的结果

# -*- coding: utf-8 -*-
import urllib
import urllib2

def youdao_translate(q):
    # 构造url
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    data = {'type': 'AUTO', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTIME',
            'typoResult': 'false'}
    data['i'] = q.encode('utf-8')

    # 修改User-Agent
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:63.0) Gecko/20100101 Firefox/63.0'}

    # 构造Request对象
    req = urllib2.Request(url=url, data=urllib.urlencode(data), headers=headers)

    response = urllib2.urlopen(req)
    result = response.read()
    print result


if __name__ == '__main__':
    youdao_translate(u'中文')

上述代码中,我们构造了url,并将中文参数转换成了utf-8格式,将修改过的User-Agent放入headers中,最后构造出了Request对象并传入urllib2.urlopen()中获取结果。

示例2:在知乎中搜索Python相关内容

# -*- coding: utf-8 -*-
import urllib
import urllib2

def search(keyword):
    # 构造url
    url = 'https://www.zhihu.com/search?type=content&q='
    query = keyword.encode('utf-8')
    url += urllib.quote(query)

    # 修改User-Agent
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:63.0) Gecko/20100101 Firefox/63.0'}

    # 构造Request对象
    req = urllib2.Request(url=url, headers=headers)

    response = urllib2.urlopen(req)
    result = response.read()
    print result


if __name__ == '__main__':
    search(u'Python')

上述代码中,我们先构造出搜索Python相关内容的url,将中文参数进行url编码,将修改过的User-Agent放入headers中,最后构造出了Request对象并传入urllib2.urlopen()中获取结果。

从上述两个示例可以看出,获取带有中文参数的url内容的方法就是将中文参数转码为utf-8格式,修改User-Agent,构造Request对象并传递参数和Header。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过urllib2获取带有中文参数url内容的方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • python 读取txt,json和hdf5文件的实例

    Python是一种广泛使用的编程语言,支持多种数据格式的读取和处理。本文将详细讲解如何使用Python读取txt、json和hdf5文件。 读取txt文件 Python中读取txt文件,可以使用内置的open()函数。下面是一个读取txt文件的示例代码: with open(‘data.txt’, ‘r’) as f: data = f.read() pri…

    python 2023年6月3日
    00
  • Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析

    Python函数的返回值 Python函数可以通过return语句返回任何类型的值(整数、浮点数、列表、元组、甚至是自定义对象等)。如果函数没有使用return语句,Python默认返回None。在函数中,可以使用多个return语句。 示例: def maximum(x, y): if x > y: return x else: return y p…

    python 2023年6月5日
    00
  • Python爬虫headers处理及网络超时问题解决方案

    Python爬虫headers处理及网络超时问题解决方案 简介 在使用Python进行爬虫开发时,会遇到对于爬虫脚本头部信息的设置和网络超时问题的解决。本文将详细讲述Python爬虫中headers的设置和超时问题的处理方法。 requests库中的headers设置 requests库是一个常用的Python爬虫库,其中的headers参数可以设置HTTP…

    python 2023年5月13日
    00
  • python集合是否可变总结

    Python中的集合(set)是一种无序且不可重复的数据结构。Python中的集合类型分为可变集合(set)和不可变集合(frozenset),其中可变集合是可以被修改的,而不可变集合则是不可被修改的。那么,Python集合是否可变呢? Python集合是否可变总结 总结如下: 可变集合(set)是可变对象,可以被修改,增加、删除元素。 不可变集合(froz…

    python 2023年5月13日
    00
  • Python里字典的基本用法(包括嵌套字典)

    现在我将为你详细讲解Python中字典的基本用法,包括嵌套字典,以下是详细攻略。 字典的基本用法 字典(dictionary)是 python3 中的一个重要数据类型,在字典中,每个数据都是由一个键和对应的值所组成的键值对。 创建字典 我们可以使用一对大括号来创建一个空字典,也可以在大括号中使用键值对的形式来创建字典。 # 创建空字典 dict1 = {} …

    python 2023年5月13日
    00
  • Python中判断输入是否为数字的实现代码

    针对Python中判断输入是否为数字的实现代码,以下是完整的攻略: 方法1:使用isnumeric()方法 isnumeric()方法可以判断输入的字符串是否只包含数字字符。如果是,则返回True,否则返回False。因此,可以利用以下代码实现判断输入字符串是否为数字的功能: # 获取用户输入 user_input = input("请输入一个数字…

    python 2023年6月3日
    00
  • Python中命令行参数argparse模块的使用

    一、介绍 Python中有一个很强大的命令行参数解析模块 argparse ,使用 argparse 可以非常方便地解析命令行参数并生成帮助信息。argparse 模块可以自动生成帮助信息,还可以自动检查参数和选项的类型以及输入的值是否合法。 二、基本使用 在使用 argparse 之前,需要先导入 argparse 库: import argparse 接…

    python 2023年6月3日
    00
  • python中parser.add_argument()用法实例(命令行选项、参数和子命令解析器)

    Python中parser.add_argument()用法实例 在Python中,如果我们要从命令行获取参数,则需要用到argparse模块。而在argparse模块中,parser.add_argument()就是添加命令行参数的方法,是argparse的核心。 本文将详细讲解parser.add_argument()方法的用法,并通过实例演示如何使用命…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部