要使用 Scrapy 的 response.xpath()
方法提取指定 XPath 表达式匹配到的所有内链(即 <a>
标签中的链接),您可以使用以下
方法如果您想要提取以 "/" 开头或以特定网址开头的链接,可以使用适当的 XPath 表达式和条件来实现。以下是一个示例:
def parse(self, response):
# 提取所有包含 class="content-wrapper-post" 的元素
content_wrapper_posts = response.xpath('//*[@class="content-wrapper-post"]')
# 遍历每个 content-wrapper-post 元素
for post in content_wrapper_posts:
# 提取当前元素中的所有内链
internal_links = post.xpath('.//a[@href and (starts-with(@href, "/") or starts-with(@href, "https://xxx.net/"))]')
# 遍历每个内链
for link in internal_links:
# 提取链接的 href 属性值
href = link.xpath('@href').get()
# 处理链接
yield {
'link': href
}
上述代码假设您正在使用 Scrapy 编写一个 Spider,并在 parse
方法中处理响应。response.xpath('//*[@class="content-wrapper-post"]')
用于提取所有包含 class="content-wrapper-post"
的元素,然后遍历每个元素并提取其中的所有带有 href
属性的 <a>
标签,最后提取每个链接的 href
属性值并将其返回。
在上面的示例中,starts-with(@href, "/") or starts-with(@href, "https://xxx.net/")
条件用于限制匹配的链接必须以 "/" 开头或以 "https://xxx.net/" 开头。这样可以保证提取的链接是站内链接或以特定网址开头的链接。您可以根据实际情况调整此条件。
发表评论 取消回复