微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用网址片段回调到多个相同的网址

如何解决如何使用网址片段回调到多个相同的网址

我目前正在使用 ScrapyScrapy-Splash 开发应用程序。

我想为使用 JavaScript 动态创建页面的网站编写抓取代码。 但是,我在同一页面上反复获取数据,但没有按预期工作...


我要抓取的网站规格如下:


当前遇到的问题

当我开始抓取时,控制台将如下所示:

  • 从第 2 页开始获取所有 2 页数据

Active_No -> 1

Active_No -> 2

Active_No -> 2

Active_No -> 2

Active_No -> 2

...

...


代码如下:

HTML

<ul class="a-pagination__list">
        <li>
            <a class="a-pagination--active" current="1" href="#" onclick="getCategoryList( $('#parent').val(),$('#child').val(),1,$('#sorter').val());">
            1
            </a>
        </li>
        <li>
            <a class="a-pagination" current="2" href="#" onclick="getCategoryList( $('#parent').val(),2,$('#sorter').val());">
            2
            </a>
        </li>
        <li>
            <a class="a-pagination" current="3" href="#" onclick="getCategoryList( $('#parent').val(),3,$('#sorter').val());">
            3
            </a>
        </li>
        <li>
            <a class="a-pagination" current="4" href="#" onclick="getCategoryList( $('#parent').val(),4,$('#sorter').val());">
            4
            </a>
        </li>
        <li>
            <a class="a-pagination" current="5" href="#" onclick="getCategoryList( $('#parent').val(),$('#child).val(),5,$('#sorter').val());">
            5
            </a>
        </li>
</ul>

蜘蛛/蜘蛛.py

import scrapy
from scrapy_splash import SplashRequest


class SplashTestSpider(scrapy.Spider):
    name = 'splash_test'
    allowed_domains = ['sample.com']
    start_urls = ['https://sample.com/category/info.PHP?parent=1&child=1']

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url,self.parse,args={'wait': 0.5})

    def parse(self,response):

        current_page_no = response.css('.a-pagination--active::text').get()
        print('Active_No ->' + str(current_page_no))

        script = """function main(splash)
        assert (splash:go(splash.args.url))
        splash: wait(1)
        local active = splash:select('.a-pagination--active')
        local active_no = active:text()
        local next_no = active_no + 1
        local button = splash:select('.a-pagination[current="'..next_no..'"]')
        button: click()
        splash: wait(1)
        return {url = splash:url(),html = splash:html()}
        end"""

        yield SplashRequest(url=response.url,callback=self.parse,endpoint='execute',args={'lua_source': script},dont_filter=True)

Mac 卡塔利娜 10.15.7

Python 3.8.5

Scrapy 2.5.0

scrapy-splash 0.7.2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。