使用scrapy库构建一个用于刮取此页面的http://espn.go.com/nba/teams,以便将所有的团队名称和相应的部门填充到数据库中。我正在尝试编写我的解析函数,但是,我仍然不完全理解如何提取相应的部门名称来匹配每个团队。
def parse(self,response):
items = []
mex = "//div[@class='span-6']/div[@class='span-4']/div/div/div/div[2]/ul/li"
i=0
for sel in response.xpath(mex):
item = TeamStats()
item['team'] = sel.xpath(mex + "/div/h5/a/text()")[i]
item['division'] = sel.xpath("//div[@class='span-6']/div[@class='span-4']/div/div/div/div[1]/h4")
items.append(item)
i=i+1
return items我的解析函数能够返回一个团队列表和一个相应的部门列表,其中列出了所有的部门。现在我并不是真正地指定确切的划分,因为在我看来,我必须从所选的团队名称中导航(它由‘team’= sel.xpath(mex +“/div/h5/a/text()”表示)通过使用前面的子关系(将包括我作为教程跟踪的一个网站,但我没有10个声誉点)来获得正确的划分,但我不知道如何编写.
如果我在这方面走错了轨道,请告诉我,因为我不是XPath方面的专家。我甚至不确定我是否需要一个计数器,就好像我删除了我,然后我得到了30份名单,所有的30支球队。
发布于 2014-12-30 18:53:07
让我们简单点。
每个除法都用div表示,其中包含一个mod-teams-list-medium类。每个司由两个部分组成:
在你的蜘蛛体内,它会以这样的方式反射:
for division in response.xpath('//div[@id="content"]//div[contains(@class, "mod-teams-list-medium")]'):
division_name = division.xpath('.//div[contains(@class, "mod-header")]/h4/text()').extract()[0]
print division_name
print
for team in division.xpath('.//div[contains(@class, "mod-content")]//li'):
team_name = team.xpath('.//h5/a/text()').extract()[0]
print team_name
print "------"我在控制台上看到的是:
Atlantic
Boston Celtics
Brooklyn Nets
New York Knicks
Philadelphia 76ers
Toronto Raptors
------
Pacific
Golden State Warriors
Los Angeles Clippers
Los Angeles Lakers
Phoenix Suns
Sacramento Kings
------
...https://stackoverflow.com/questions/27710766
复制相似问题