Python 3.x Python抓取-具有多个条件的XPath语法
我正在编写一个简单的scraper从Kayak中提取航班价格-我正在使用XPath提取多个数据项(持续时间、航空公司、价格等),并将每个数据项存储在一个包含15个值的列表中(Kayak页面上的结果) 我的问题是,“price”变量scrape返回的值超过15个,因为除了“best”结果外,它还拉取其他显示的结果(参见屏幕截图-RHS上的大字体与底部LHS中的两个选项) 我已将问题缩小到以下方面: 1) 拉取这两个值的总体(工作)XPath是:Python 3.x Python抓取-具有多个条件的XPath语法,python-3.x,selenium,xpath,web-scraping,Python 3.x,Selenium,Xpath,Web Scraping,我正在编写一个简单的scraper从Kayak中提取航班价格-我正在使用XPath提取多个数据项(持续时间、航空公司、价格等),并将每个数据项存储在一个包含15个值的列表中(Kayak页面上的结果) 我的问题是,“price”变量scrape返回的值超过15个,因为除了“best”结果外,它还拉取其他显示的结果(参见屏幕截图-RHS上的大字体与底部LHS中的两个选项) 我已将问题缩小到以下方面: 1) 拉取这两个值的总体(工作)XPath是: '//a[@class="booking-link
'//a[@class="booking-link "]/span[@class="price option-text"]/span[@class = "price-text"]'
2) 区分主价格和附加价格的关键在于@id字符串,其中两种价格的@id都是
- (i) 部分随机生成
- (ii)在两种情况下均包含“-价格文本”,并且
- (iii)仅在附加价格中包含“额外信息”
e、 g:
- 主要价格://*[@id=“pck6-mb-aE-1d84916e1b2-price-text”]
- 附加价格://*[@id=“NB5A-extra-info-hmb-tE-15ae5bd2e33-price-text”]
'//a[@class="booking-link "]/span[@class="price option-text"]/span[@class = "price-text" and not[contains(@id,"extra-info")]]'
'//a[@class="booking-link "]//span[@class="price option-text"]//span[[not[contains(@id,"extra-info")]//span[contains(@id,"-price-text")]]'
'//a[@class="booking-link "]/span[@class="price option-text"]/span[len(@id==33)]'
尝试以下方法:
//a[@class="booking-link "]/span[@class="price option-text"]/span[@class="price-text"][not(contains(@id,"extra-info"))]
您也可以使用祖先获取价格列表,请尝试下面的解决方案
//span[@class='custom-text'][contains(text(),'View Deal')]/ancestor::div[@class="multibook-dropdown"]//span[@class = "price-text"]