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

yizhihongxing

要通过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如何实现API的调用详解

    API(Application Programming Interface)是一种应用程序接口,可以让不同的应用程序之间相互通信和交互。Python可以使用多种库和工具来实现API的调用,例如requests、urllib、http.client等。本文将详细讲解如何使用Python实现API的调用的完整攻略,包括使用requests和urllib两个示例。…

    python 2023年5月15日
    00
  • python3 面向对象__类的内置属性与方法的实例代码

    Python 3 是一种面向对象编程的语言,这意味着你可以创建类和对象,并使用它们来管理数据和行为。类是对象的模板或蓝图,它定义了对象的属性和方法。Python 3 为类和对象提供了许多内置属性和方法,让你更方便地处理它们。 类的内置属性 Python 3 中的每个类都有一些内置属性,如下所示: __name__:表示类的名称 __module__:表示定义…

    python 2023年6月2日
    00
  • Python实现简易信息分类存储软件

    下面是“Python实现简易信息分类存储软件”的完整攻略。 一、项目背景 在日常生活和工作中,我们经常会遇到需要将某些信息进行分类存储的情况,例如人员名单、客户信息、学生档案等等。为了方便管理和查找,我们需要将这些信息按照一定方式进行分类存储。本项目旨在通过利用Python实现一个简易信息分类存储软件来实现这一目的。 二、技术选型 本项目的基础技术选项如下:…

    python 2023年6月3日
    00
  • python list的index()和find()的实现

    在Python编程中,list是一种常用的数据类型,用于表示一个有序的、可变的序列。list中包含了很多常用的方法,其中包括index()和find()。这两个方法都可以用来查找列表中某个元素的位置,但是它们之间有很多不同之处。下面将细讲解list的index()和find()的实现。 index()方法 index()方法是list中的一个方法,用于查找列…

    python 2023年5月13日
    00
  • Python中使用subprocess库创建附加进程

    下面是Python中使用subprocess库创建附加进程的完整攻略。 什么是subprocess库 subprocess是Python标准库中的一个模块,用于创建新进程并与其进行交互。它提供了更好的处理标准输入、输出和错误流的功能,可以在子进程的上下文中执行外部命令。 如何使用subprocess库创建附加进程 使用subprocess库创建附加进程的步骤…

    python 2023年6月2日
    00
  • 基于Python实现RLE格式分割标注文件的格式转换

    下面我将详细讲解“基于Python实现RLE格式分割标注文件的格式转换”的完整攻略。 一、RLE格式分割标注文件是什么? RLE格式是一种更加高效的图像语义分割数据表示格式,其数据以一串RLE编码的方式进行存储,而不是以像素点的形式存储,有效减少了数据的体积。RLE格式分割标注文件即是使用RLE格式对物体分割区域进行标注的文件。 二、RLE格式分割标注文件的…

    python 2023年5月20日
    00
  • python excel使用xlutils类库实现追加写功能的方法

    下面是详细讲解“pythonexcel使用xlutils类库实现追加写功能的方法”的完整实例教程: 1. 简介 PythonExcel是一个用于操作Excel文件的Python库,而xlutils则是一个PythonExcel的辅助类库,可以扩展PythonExcel的功能。通过使用xlutils,我们可以实现Excel文件的追加写入功能,即向已有的Exce…

    python 2023年5月13日
    00
  • Python提升Excel效率的5个方法!(实例演示)

    使用Python进行Excel自动化,可以有效地帮助我们提高工作效率和减少出错率。 本文将详细介绍使用Python操作Excel的5种提升工作效率的方法。具体有以下: 5种自动化操作Excel的方法 读取和写入Excel文件 使用Python中的第三方库(如openpyxl、xlrd、xlwt、xlutils等)可以读取和写入Excel文件。比如,我们可以读…

    2023年2月26日
    00
合作推广
合作推广
分享本页
返回顶部