0

我正在尝试使用 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/

4

0 回答 0