如何使用scrapy访问下表的所有特定数据?

时间:2015-06-24 22:16:04

标签: html xpath scrapy

我正在尝试访问网址https://www.jefit.com/exercises/1/中的以下表格元素的所有数据 我尝试使用scrapy抓取数据。但是无法抓取并且出现了一些错误,我无法抓取所需的所有数据。请帮我纠正我的代码以抓取“名称”,“图片链接”,“如何执行练习”以及表格中提供的所有其他数据。 我正在尝试以下代码:

from scrapy.spider import Spider
from scrapy.selector import Selector
from myproject.items import getExercise

class MySpider(Spider):
   name = "getExercise"
   allowed_domains = ["www.jefit.com"]
   start_urls = ["https://www.jefit.com/exercises/1/" ]

def parse(self, response):

   item = getExercise()
   item['exerciseName']=response.xpath('//table[@class = "JefitMainTable"]/tbody/tr/td[2]/table[2]/thead/tr/th/text()').extract()
   return item

1 个答案:

答案 0 :(得分:3)

尝试在XPath中用/tbody替换//

当仅在浏览器DOM中检查XPath时,这是一个常见问题,因为浏览器会自动将tbody元素放入表中。

在scrapy shell中尝试XPath表达式通常是个好主意:

$ scrapy shell https://www.jefit.com/exercises/1/
>>> response.xpath('//table[@class = "JefitMainTable"]/tbody/tr/td[2]/table[2]/thead/tr/th/text()').extract()
[]
>>> response.xpath('//table[@class = "JefitMainTable"]//tr/td[2]/table[2]/thead/tr/th/text()').extract()
[u'Band Cross Over']