首页 > 解决方案 > 操作列表(URL)中的值 - Python

问题描述

我想重新格式化列表中的值。我正在尝试从带有scrapy的网站中提取网址。Scrapy 返回相对 URL,然后将其存储在列表中。我想将绝对 url 与相对 url 连接起来,并在列表本身中的相对 url 中进行一些匹配和替换,然后将其用于下一步。

这是当前列表的样子:

regions = ['/listings/in/spain%2Fandalucia', '/listings/in/spain%2Faragon', '/listings/in/spain%2Fasturias', '/listings/in/spain%2Fbalearic-islands']

这就是理想的样子。

regions_final = ['https://worldmap.com/listings/in/spain/andalucia', 'http://worldmap.comlistings/in/spain/Faragon', 'http://worldmap.comlistings/in/spain/fasturias', 'http://worldmap.com/listings/in/spain/balearic-islands']

我需要一个简单的查找和替换“/”的“%2F”,并在当前值前面附加“ https://worldmap.com ”。如果有人有任何提示,我将非常感谢您的帮助!

谢谢

标签: pythonscrapy

解决方案


这是创建 URL 的更强大的方法:

from urllib.parse import unquote

region_urls = [response.urljoin(unquote(x)) for x in regions]

urljoin负责根据当前响应的基本 URL 以及相对 URL 创建正确的绝对 URL。

unquote照顾%..符号,以防你也得到其他人。


推荐阅读