我正在尝试使用 scrapy-splash 抓取动态表的值并将它们导出到 json/excel/something。
为了加载值,我必须单击几个按钮,但我找不到方法,不得不承认我对爬行知之甚少。
按钮的 HTML 如下所示:
<ul>
<li>
<a href="#">1</a>
</li>
<li>
<a href="#">2</a>
</li>
<li>
<a href="#">3</a>
</li>
<li>
<a href="#">4</a>
</li>
<li>
<span>...</span>
</li>
<li>
<a href="#">10</a>
</li>
</ul>
每当你按下其中一个时,桌子上的内容就会改变,上面的数字也会改变。
我想一一点击它们,提取表格的值并将其保存到 excel/json 中。
一个小小的想法是:
import scrapy
from scrapy_splash import SplashRequest
class Extractor(scrapy.Spider):
name = 'extractor_spider'
def start_requests(self):
yield SplashRequest( #Splash
url='url',
callback=self.parse,
)
def parse(self, response):
selectors = response.xpath('//ul/li') #extract the path of the selectors
for sel in selectors: #Just a test, doesn't store all the selectors
# sel.click() #Obviously doesn't work, but the idea is to click here and load the values of each page
### CODE TO EXTRACT DATA AND WRITE TO CSV ###
我尝试通过使用 Chrome 中的检查工具重新加载网络,我在网络中看到当您单击按钮时它会发送一个 GET 请求,我尝试模拟该请求,但没有成功:
def parse(self, response):
### CODE TO EXTRACT DATA AND WRITE TO CSV ###
link = "https://url.com" + codeRequest
yield SplashRequest(link, self.parse)
¿ 任何提示或想法来完成这项工作?
我也考虑过使用 selenium,但没有简单的方法来定位按钮,因为它们没有任何独特的 id 或名称。
另外,我相信用 selenium 抓取页面会更难,因为表中的页面数是未知的。
更具体地说,我要抓取的网络是 Malwr、“行为分析”字段和下表。
就像这个链接中的那个(随机链接,不是我要抓取的链接之一):https ://malwr.com/analysis/MmFlMTBkOTA1MGVjNGI5ZGE1M2E3YjQwYzAxYTNjZjc/