我需要在给定锚标记的特定文本的情况下从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()
答案 0 :(得分:1)
循环中的xpath应该以{{1}}开头,换句话说,你需要相对于.//
。
我还会使用site
类li
内的ul
标记,而不是搜索内部第三个medium-logos
内的第一个div
标div
的{{1}}:
div
它产生:
content