如何使用Scrapy的CSS选择器提取<a>标签中的Href属性
如何用Scrapy的CSS选择器提取标签的href属性
嘿,我来帮你搞定Scrapy里用CSS选择器提取<a>标签href属性的问题!其实核心语法很简单,我分通用场景和你给出的具体标签两种情况来讲:
一、通用提取方法
不管<a>标签的class是什么,要提取它的href属性,你只需要用Scrapy支持的CSS属性选择语法:::attr(href)。
提取页面所有
<a>标签的href:# 获取所有结果,返回列表 all_hrefs = response.css('a::attr(href)').getall() # 只获取第一个匹配的结果 first_href = response.css('a::attr(href)').get()提取带特定class的
<a>标签的href:
如果<a>有单个class(比如<a class="link" href="xxx">),直接用a.link::attr(href);如果是多个class(就像你给出的例子),可以用.把多个class连起来,或者选其中一个最独特的class来缩小范围。
二、针对你给出的具体标签提取
你提供的标签是:
方法1:匹配所有class(最精确)
把所有class用.连接,确保只选中这个特定标签:
specific_href = response.css('a.mod-gallery-article__media.mod-gallery-article__media--img.has-lightbox::attr(href)').get()
方法2:匹配单个独特class(更简洁)
如果页面里只有这个标签带has-lightbox或者mod-gallery-article__media--img这类独特class,直接用单个class选择即可:
# 用has-lightbox class specific_href = response.css('a.has-lightbox::attr(href)').get() # 用mod-gallery-article__media--img class specific_href = response.css('a.mod-gallery-article__media--img::attr(href)').get()
额外小技巧:转成绝对URL
如果提取到的是相对路径(比如你例子里的/content/...),可以用response.urljoin()转成绝对URL:
absolute_url = response.urljoin(specific_href)
内容的提问来源于stack exchange,提问作者Dan George Bostan
相关产品推荐
相关产品推荐

