Python 爬虫时,如何替换 URL 中的 query 字段?

在我们写爬虫的时候,可能会需要在爬虫里面基于当前url生成一个新的url。
下一页的链接需要上一页响应里面的参数,例如:

https://xxx.cn/comments/hotflow?mid=456116456616146&max_id=123456789&count=20

当我们拿到下一页的max_id要替换链接中原来的值,大家可以试一试,如果用正则表达式,怎么覆盖这4种情况,生成下一页的网址。
实际上,我们不需要使用正则表达式。Python自带的urllib模块已经提供了解决这个问题的方案了。编写下面方法来实现:

from urllib.parse import urlparse, urlunparse, parse_qs, urlencode


def replace_field(url, name, value):
    parse = urlparse(url)
    query = parse.query
    query_pair = parse_qs(query)
    query_pair[name] = value
    new_query = urlencode(query_pair, doseq=True)
    new_parse = parse._replace(query=new_query)
    next_page = urlunparse(new_parse)
    return next_page

url='https://xxx.cn/comments/hotflow?mid=456116456616146&max_id=123456789&count=20'
next_page = replace_field(url, 'max_id', '987654321')
print(next_page)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值