这是从以前的 XPath 线程衍生出来的(老兄告诉我它与 XPath 无关)。
所以我试图抓取这个网页:http ://www.baseball-reference.com/teams/BOS/2013.shtml的排名、职位、姓名、年龄等。
每当我使用:
item['rank'] = stat.select('//table[@id="team_batting"]/tbody/tr/td[1]//text()')[count].extract()
item ['position'] = stat.select('//table[@id="team_batting"]/tbody/tr/td[2]//text()')[count].extract()
它只给了我 5 个结果:
[{"position": "C", "rank": "1"},
{"position": "1B", "rank": "2"},
{"position": "2B", "rank": "3"},
{"position": "SS", "rank": "4"},
{"position": "3B", "rank": "5"}]
如果我删除 [count],它会给我所有的排名和职位,但格式不正确,它给了我 4 行重复的行(我把它浓缩到适合这里,有 44 行):
{"position": ["C", "1B", "2B", "SS", "3B", "LF"], "rank": ["1", "2", "3", "4", "5", "6", "7"]}
这是我的解析器代码,这将有所帮助:
def parse(self, response):
hxs = HtmlXPathSelector(response)
stats = hxs.select('//div[@class="table_container"]')
count = 0
items = []
for stat in stats:
item = MlbrefItem()
items .append(item)
count +=1
return items
我感到很困惑。当我完成本教程时: http: //davidwalsh.name/python-scrape [count] 提取了所有结果。我在不同的网站上尝试这个也没有问题。但这是我需要的网站。
任何帮助是极大的赞赏。谢谢
编辑:这是实际代码(忽略评论):https ://www.dropbox.com/s/rk29kotd09kioeg/mlbref_spyder.py