당신의 XPath는
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
이
내가에 문제가 오전 라인 루프는
.//
으로 시작해야합니다. 즉, 다시 만들 필요가 있습니다.
site
로 이동하십시오.
내가 대신 content
ID로 div
내부의 세 번째 div
내부의 첫번째 div
를 검색하는 ul
medium-logos
와 클래스 내부 li
태그를 통해 갈 것 :
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('//ul[@class="medium-logos"]//li')
for site in sites:
item = NBAItem()
item['team_name'] = site.xpath('.//a[@class="bi"]/text()').extract()[0]
item['team_link'] = site.xpath('.//a[@class="bi"]/@href').extract()[0]
item['team_stats_link'] = site.xpath(".//a[text()='Stats']/@href").extract()[0]
yield item
그것은 생산 :
{'team_link': u'http://espn.go.com/nba/team/_/name/bos/boston-celtics', 'team_name': u'Boston Celtics', 'team_stats_link': u'/nba/teams/stats?team=bos'}
{'team_link': u'http://espn.go.com/nba/team/_/name/bkn/brooklyn-nets', 'team_name': u'Brooklyn Nets', 'team_stats_link': u'/nba/teams/stats?team=bkn'}
...
'site.xpath ('// [text() ='Stats ']/@ href')'는 Python 구문 오류입니다. 작은 따옴표를 살펴보십시오. – Tomalak
아! 이 모든 시간. 도와 주셔서 감사합니다. – user1636797