一:前言

以前年少无知,不知道Python 官方模块里面有处理 URL的,拿起正则一顿匹配,所以在匹配url里面的页面的时候出现了问题。同时也怪我测试环境是Python3 线上生产环境是Python 2,对无序字典urlencode不一样,以及写的正则匹配问题。最后造成的结果是页面少匹配了很多页数据,最后按步测试才找到问题。

所以正确的使用URL处理模块还是方便和明智的

第三方模块有 yurl, Python3内置的有urllib.parse

Python2 处理url的模块不在一个位置, urllib里面有urlencode....,urlparse里面有urlparse,`parse_qsl....

参考链接:

二:目标

举个 利用API 获取数据的例子:

下面有个 url 和一个需要POST的参数字典,需要构造完成后发送参数获取数据,判断数据是否需要进行下一页,如果需要那么 page 部分需要提取出来后加1,再继续请求数据。

其实要做的事情很简单,提取page 加1,继续请求。

raw_url = 'http://api.xxxxxx.com/xxxxxx/xxx.json?'

param_dict = {

'id': 'xxxxx',

'card_addition': 1,

'token': 'fdflsdkr3029432',

'page': 145334,

}

三:实战代码

当时在Scrapy 的 start_requests 大致这样写的

ids = pipeline.execute()

for id in ids:

self.param_dict['id'] = id.strip()

param = urlencode(self.param_dict)

url = self.raw_url + param

yield scrapy.Request(url=url, callback=self.parse)

#

然后在 parse 里面对response做判断如果还需要对该id下的数据抓取下一页数据。

当时我直接对response.url正则匹配再加上Python3与Python 2,对无序字典urlencode不一样就出现少匹配了很多页面的问题。所以回来我利用python内置的URL 处理模块,我就改了代码。

# 解析url,获取url里面的各种组成成分

parsed_url = urlparse(response.url)

# 获取url组成成分里面的 query 参数部分

query = dict(parse_qsl(parsed_url.query))

# 获取page的数值,加1后重新urlencode 这样 下一页的 url就构造完成了

page = query.get('page')

query['page'] = int(page) + 1

param = urlencode(query)

next_url = raw_url + param

四: 后记

多多思考,多多搜索。加油!

python 处理url 参数_Python 优雅的处理网页URL参数相关推荐

  1. python中execute函数_Python中的函数定义与参数使用

    本节知识点:(1)函数定义格式:(2)五种参数使用 函数定义 基本语法格式 def function_name( parameter_list ): return values 函数通常为小写英语单词 ...

  2. python一个函数可以有参数也可以没有参数_Python:有和没有关键字参数的lambda函数行为?...

    我正在使用lambda函数进行tkinter的GUI编程. 最近我在实现打开文件的按钮时遇到困难: self.file="" button = Button(conf_f, tex ...

  3. python argv 详解_python解析传入的命令行参数 argv

    python解析命令行参数主要有三种方法:sys.argv.argparse解析.getopt解析 方法一:sys.argv -- 命令行执行:python test_命令行传参.py 1,2,3 1 ...

  4. python opencv 摄像头亮度_Python 下opencv 应用: 摄像头参数设置

    为了取得好的图片效果,我们需要设置摄像头的参数. 假如摄像流为 cap, 那么设置参数是cap.set(参数编号,参数) 获取参数值的函数是  cap.get(参数编号) 看一段摄像头参数设置读取的例 ...

  5. python中可选参数和可变参数_Python函数中的可变长参数详解

    一.Python函数中的参数 1.使用python的函数时,有参数类别,比如位置参数.关键字参数.可变长参数 2.位置参数.关键字参数很好理解,关键是可变长参数经常能见到,但是一直没有搞懂是什么意思 ...

  6. python中panel不接受参数_Python基础之只接收关键字参数的函数

    当我们希望函数的某些参数强制使用关键字参数时,可以将强制关键字参数放到某个*后面就能得到这种效果.比如: def recv(maxsize, *, block): """ ...

  7. python数组做参数_python完成数组格式的请求参数的加密计算

    #输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course ...

  8. python 处理url 参数_python模块 furl 使得操纵URL简单化,去除网址中参数

    介绍: furl是一个小型Python库,可以轻松解析和操作URL. Python的标准urllib和 urlparse模块提供了许多与URL 相关的功能,但使用这些函数执行常见的URL 操作非常麻烦 ...

  9. python调用接口时传多个参数_python接口自动化11-post传data参数案例

    前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...

最新文章

  1. [深入理解Android卷一全文-第九章]深入理解Vold和Rild
  2. SQL Server 2000安装指南及数据创建
  3. python如何保存源文件_python自动保存百度盘资源到百度盘中的实例代码
  4. HTML5画布如何设置线的样式?
  5. 2018广技师C语言专插本试题,专插本2016广技师C语言专插本考试大纲已核对.doc
  6. Android之在在EditText的xml里面配置了相关属性依然没有显示光标问题
  7. aref无效 lisp_aref无效 lisp_Common Lisp专题4:数组
  8. spark mapWithState 实现
  9. Crush Crouse 心理学笔记
  10. 如何进行大数据的入门级学习?
  11. (转)《蜗居》带给校园男女多少悲喜
  12. MySQL基础 - 带搜索条件的查询
  13. 面向数据中心,浪潮存储双剑出鞘
  14. 深度解密Go语言之关于 interface 的 10 个问题
  15. 二级分销商城系统开发软件
  16. [转载]推荐:互联网思维必读十本书
  17. 华为开发者联盟鸿蒙系统,公告 | 华为开发者联盟
  18. 计算机网络(自顶向下方法)-Internet概述
  19. 在RISC-V星光板上创建Debian系统镜像
  20. 随机数独的生成的实验思路概述

热门文章

  1. http headers详解
  2. 框架之---Django
  3. 解决warning LNK1166: cannot adjust code之掩耳盗铃版
  4. iOS使用WSDL2ObjC工具调用Webservice接口
  5. HTML5之地理信息应用 获取自己的位置
  6. 如何在word里面插入目录
  7. WEBLOGIC 内存溢出 解决方案
  8. 行路的心情-让自己慢下来(11)
  9. Vue使用watch监听一个对象中的属性
  10. django(models)视图与html 简单的操作