Scrapy响应未显示任何表数据

9wbgstp7  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(147)

我尝试抓取这个website,我尝试在我的cli中运行scrapy shell,我可以得到xpath响应,最高可达//table[@class='table my-table'],但在此之后,我无法获得任何数据,因为响应是空数组[]。我不觉得内容隐藏在JavaScript中。我错过了一些技术,还是我的方法对scrapy有错误?
以下是我的整体代码,供参考

class MarketDataSpider(scrapy.Spider):
    name = "nepse_floorsheet"

    def start_requests(self):
        url = 'http://www.nepalstock.com/main/floorsheet/index/0/'
        yield Request(url, callback=self.parse)

    def parse(self, response):

        for tr in response.xpath("//table[@class='table my-table']"):

            print(tr.xpath("//tbody//tr[position()>2and position()<23]"))
pu82cl6c

pu82cl6c1#

要在元素中搜索XPATH,需要在xpath表达式前面加一个点,如下所示:

tr.xpath(".//tbody//tr[position()>2 and position()<23]")

没有测试它,但这是正确的方式。Scrapy文档:https://docs.scrapy.org/en/latest/

xvw2m8pv

xvw2m8pv2#

只要删除tbody标记,它就会生成ResultSet,但输出总是根据当前的静态表数据动态更改。

范例:

class MarketDataSpider(scrapy.Spider):
    name = "nepse_floorsheet"

    def start_requests(self):
        url = 'http://www.nepalstock.com/main/floorsheet/index/1/'
        yield scrapy.Request(url, callback=self.parse)

    def parse(self, response):

        for tr in response.xpath("//table[@class='table my-table']//tr[position()>2 and position()<23]"):
            yield {
                'Quantity':tr.xpath('.//td[6]/text()').get(),
                'Rate':tr.xpath('.//td[7]/text()').get()
                }

相关问题