Python爬虫:url中带字典列表参数的编码转换方法

yipeiwu_com6年前Python爬虫

平时见到的url参数都是key-value, 一般vlaue都是字符串类型的

如果有幸和我一样遇到字典,列表等参数,那么就幸运了

python2代码

import json
from urllib import urlencode

# 1. 直接将url编码
params = {
  "name": "Tom",
  "hobby": ["ball", "swimming"],
  "books": [{"name": "语文", "pages": 20}]
}

print(urlencode(params))
"""
hobby=%5B%27ball%27%2C+%27swimming%27%5D&
books=%5B%7B%27name%27%3A+%27%5Cxe8%5Cxaf%5Cxad%5Cxe6%5Cx96%5Cx87%27%2C+%27pages%27%3A+20%7D%5D&
name=Tom
"""

# 2. 先用json序列化字典和列表参数
params = {
  "name": "Tom",
  "hobby": json.dumps(["ball", "swimming"]),
  "books": json.dumps([{"name": "语文", "pages": 20}])
}

print(urlencode(params))

"""
hobby=%5B%22ball%22%2C+%22swimming%22%5D&
books=%5B%7B%22name%22%3A+%22%5Cu8bed%5Cu6587%22%2C+%22pages%22%3A+20%7D%5D&
name=Tom
"""

观察1 和2 序列化出来的url参数不是一样的,如果第一种方式的url不能正常访问,那么就用第二种

相关文章

Python实现爬取需要登录的网站完整示例

本文实例讲述了Python爬取需要登录的网站实现方法。分享给大家供大家参考,具体如下: import requests from lxml import html # 创建 sess...

Python3多线程爬虫实例讲解代码

多线程概述 多线程使得程序内部可以分出多个线程来做多件事情,充分利用CPU空闲时间,提升处理效率。python提供了两个模块来实现多线程thread 和threading ,thread...

python实现爬虫抓取小说功能示例【抓取金庸小说】

python实现爬虫抓取小说功能示例【抓取金庸小说】

本文实例讲述了python实现爬虫抓取小说功能。分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- from bs4 import BeautifulS...

python抓取网页时字符集转换问题处理方案分享

问题提出:     有时候我们采集网页,处理完毕后将字符串保存到文件或者写入数据库,这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数...

Pyspider中给爬虫伪造随机请求头的实例

Pyspider 中采用了 tornado 库来做 http 请求,在请求过程中可以添加各种参数,例如请求链接超时时间,请求传输数据超时时间,请求头等等,但是根据pyspider的原始框...