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所有包

    如何一键升级Python所有包 在Python开发中,随着项目的不断开发,会涉及到很多不同的第三方包。这些包很频繁地会向外发布更新版本,我们需要经常升级这些包来保证项目的正常运行。但是手动逐个升级这些包非常费时间费力,这时候一键升级Python所有包的方式就非常实用。 以下是一键升级Python所有包的完整攻略。 第一步:安装pip pip是Python的第…

    python 2023年5月14日
    00
  • 详述 Sublime Text 打开 GBK 格式中文乱码的解决方法

    以下是详细讲解“详述 Sublime Text 打开 GBK 格式中文乱码的解决方法”的完整攻略。 问题描述 在使用 Sublime Text 编辑 GBK 格式的文本文件时,会出现中文乱码,无法正常显示文件内容的情况。此时需要进行相应的设置,才能使文件内容正常显示。 解决方法 为了解决以上问题,需进行如下操作: 步骤 1:打开 Sublime Text 编…

    python 2023年5月31日
    00
  • 55分钟学会正则表达式

    以下是“55分钟学会正则表达式”的完整攻略: 一、正则表达式简介 正则表达式是一种用于匹配字符串的模式。它可以用来检查字符串是否符合某种模式,或者从字符串中提取符合某种模式的子串。正则表达式在文本处理、数据清洗、爬虫等领域都有广泛的应用。 二、正则表达式语法 正则表达式由普通字符和元字符组成。普通字符表示它本身,元字符则表示一些特殊的含义。以下是一些常用的元…

    python 2023年5月14日
    00
  • 没有名为 ___ 的模块。如何将 Sublime Text3 链接到 python 3 中的虚拟环境?

    【问题标题】:No module named ___. How to link Sublime Text3 to a virtual env in python 3?没有名为 ___ 的模块。如何将 Sublime Text3 链接到 python 3 中的虚拟环境? 【发布时间】:2023-04-01 06:15:01 【问题描述】: 我想我的崇高文本 3…

    Python开发 2023年4月8日
    00
  • python tarfile压缩包操作保姆级教程

    Python tarfile压缩包操作保姆级教程 在Python中,tarfile模块是一个用于创建和提取tar文件的库。tar文件是一种常见的打包文件格式,通常用于在UNIX系统上打包文件和目录。本文将详细介绍如何使用Python的tarfile模块创建、读取、提取和归档tar文件。 创建tar文件 要创建tar文件,我们首先需要导入tarfile模块。然…

    python 2023年6月3日
    00
  • Python之循环结构

    Python之循环结构 循环结构简介 在编程时,循环结构是一种非常实用的结构,可以让计算机重复执行指定的代码。Python语言支持两种循环结构,分别是for循环和while循环。在实际开发中,针对不同的需求,选用不同的循环结构。 Python之for循环 for循环是一种针对“可迭代对象”的循环结构,主要用于遍历一个序列(列表、元组、字符串)或其他可迭代对象…

    python 2023年5月14日
    00
  • 如何使用多处理的python检查网页是否存在

    【问题标题】:How to check if webpage are alive with python with multiproccessing如何使用多处理的python检查网页是否存在 【发布时间】:2023-04-06 02:36:01 【问题描述】: 我有一个 url 列表(大约 25k),我正在尝试检查它们是否还活着(200 响应)。想要使用 …

    Python开发 2023年4月6日
    00
  • 深入理解Python变量的数据类型和存储

    深入理解 Python 变量的数据类型和存储 Python 是一门动态类型语言,即变量的类型是在运行时确定的。因此,深入理解 Python 变量的数据类型和存储及其在计算机底层的表示方式,有助于我们更好地使用 Python 进行编程。 Python 变量的数据类型 Python 内置了五种标准的数据类型,分别是: Numbers(数字):整数、浮点数、复数等…

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