使用Scrapy修正XPath以提取目标页面中的链接
修正Scrapy提取官网链接的XPath方案
先通过浏览器开发者工具分析目标页面结构,定位官方网站链接的特征:目标页面里,官方网站链接通常带有**"Официальный сайт"**的文本标识,或是在联系信息区块内,a标签的href指向对应官网域名。
针对该页面,推荐以下几种修正后的XPath写法:
1. 按文本内容定位(最精准)
如果链接文本明确包含"Официальный сайт",用这个XPath直接提取href属性:
//a[contains(text(), 'Официальный сайт')]/@href
2. 按父容器+域名特征定位
如果文本标识不明显,但官网域名是常见的.ru/.com后缀,可结合联系信息区块定位:
//div[contains(@class, 'contact-info')]//a[contains(@href, 'http') and (contains(@href, '.ru') or contains(@href, '.com'))]/@href
3. 按图标关联定位
部分页面会用网站图标关联官网链接,可通过图标元素的兄弟节点定位:
//i[contains(@class, 'icon-website')]/following-sibling::a/@href
Scrapy代码示例
将修正后的XPath代入Scrapy爬虫:
import scrapy class LawyerSpider(scrapy.Spider): name = 'lawyer' start_urls = ['https://ap-rk.com/advokat-panfilov-vladimir-vladimirovich-moskva-otzyvy-telefon-adres-chasy-raboty-foto/'] def parse(self, response): official_site = response.xpath("//a[contains(text(), 'Официальный сайт')]/@href").get() yield { 'official_website': official_site }
验证方法
在Chrome浏览器中打开目标页面,按下F12进入开发者工具,切换到Console标签,输入$x("你的XPath")即可实时验证是否能匹配到目标元素。
内容的提问来源于stack exchange,提问作者Amen Aziz
相关产品推荐
相关产品推荐

