使用Xpath提取给定锚标记文本的href

时间:2014-05-16 04:14:15

标签: python html xpath web-scraping scrapy

我需要在给定锚标记的特定文本的情况下从href属性中提取url。

from scrapy.spider import Spider
from scrapy.selector import Selector
from nba.items import NBAItem

class ESPNSpider(Spider):
    name = "ESPN"
    allowed_domains = ["espn.com"]
    start_urls = ["http://espn.go.com/nba/teams"]

def parse(self, response):
    sel = Selector(response)
    sites = sel.xpath('//*[@id="content"]/div[3]/div[1]')
    items = []
    for site in sites:
        item = NBAItem()
        item['team_name'] = site.xpath('//a[@class="bi"]/text()').extract()
        item['team_link'] = site.xpath('//a[@class="bi"]/@href').extract()
        item['team_stats_link'] = site.xpath('//a[text()='Stats']/@href').extract()
        items.append(item)
    return items

这是我遇到问题的路线:

item['team_stats_link'] = site.xpath('//a[text()='Stats']/@href').extract()

我也尝试过:

item['team_stats_link'] = site.xpath('//a[contains(text(), 'Stats')]/@href).extract()

相关网站:http://espn.go.com/nba/teams

1 个答案:

答案 0 :(得分:1)

循环中的xpath应该以{{1​​}}开头,换句话说,你需要相对于.//

我还会使用siteli内的ul标记,而不是搜索内部第三个medium-logos内的第一个divdiv的{​​{1}}:

div

它产生:

content