如何在Scrapy中从HTML的href获取完整嵌入式HTTP链接
解决Scrapy提取完整HTTP链接的问题
方法一:使用
response.urljoin()转换相对路径
Scrapy内置的urljoin()方法会自动根据当前响应的基URL(response.url)拼接相对路径,避免手动拼接导致的重复路径问题。示例代码:# 提取相对路径 relative_path = response.css('p.mb-0 a::attr(href)').get() # 转换为完整HTTP链接 full_url = response.urljoin(relative_path)该方法能自动处理各类相对路径格式(无论开头是否带
/),生成正确的绝对URL。方法二:通过
response.follow()获取完整URL
若后续需要请求该链接,可直接使用response.follow(),它会自动处理相对路径,同时可通过其url属性拿到完整链接:link_selector = response.css('p.mb-0 a') if link_selector: request = response.follow(link_selector) full_url = request.url
补充说明:浏览器中显示的完整链接是浏览器自动补全后的结果,实际网页源码中存储的就是相对路径,因此必须借助Scrapy的工具方法完成转换。
内容的提问来源于stack exchange,提问作者Michael Amos
相关产品推荐
相关产品推荐

