我正在嘗試抓取這個網站 ,我嘗試在我的 cli 中運行 scrapy shell,我可以獲得//table[@class='table my-table']對此 xpath 的 xpath 回應,但之后我無法獲取任何資料,因為回應是空陣列[]我不覺得內容隱藏在里面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]"))
uj5u.com熱心網友回復:
要在元素中搜索 XPATH,您需要在 xpath 運算式前面放置一個點,如下所示:
tr.xpath(".//tbody//tr[position()>2 and position()<23]")
沒有測驗它,但這是正確的方法。Scrapy 檔案:https ://docs.scrapy.org/en/latest/
uj5u.com熱心網友回復:
只需洗掉 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()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530243.html
