如何解决Scrapy Splash 代码刺激点击链接
我刚刚开始学习scrapy并被其中一个问题陈述所困扰。 有人可以帮助我解决下面提到的查询,因为我对此很困惑。任何帮助将不胜感激。
我正在使用 Scrapy Splash 来抓取具有如下元素的页面: 1 2 3 4 5 下一个
我的目标:提取每个页面上的所有锚标记,然后单击“下一步”(在带有标记的 li 元素下)。继续这样做,直到没有“下一个”元素。
我想“点击”带有“Next”(li 标签)的锚点,然后执行 javascript 以获取下一页。
注意:我必须点击每个项目,因为整个网站的分页具有相同的 URL。
我当前的代码如下所示:
lua_script = """
function main(splash,args)
assert(splash:go(url)
splash:wait(0.5)
# assert(splash:runjs('document.find_element_by_xpath('//*[@class="element__nav element__nav--next"]'))
assert(splash:runjs(javascript))
return {
html = splash:html(),}
end
"""
def start_requests(self):
yield scrapy.Request(url=url,callback=self.extract_data1)
def extract_data1(self,response):
##gives me the URL of the first page
urls = response.xpath('//h4//a/@href').extract()
print(URLs)
## end
## then I want to click the "next" and paginate to page 2
javascript = "doSubmit('frmRow',1,0)"
href = response.xpath('//*[@class="element__nav element__nav--next"]/@href')
if href:
new_url = href.extract_first()
yield SplashRequest(new_url,self.parse,cookies={'store_language': 'en'},endpoint='execute',args={'lua_source': self.lua_script,'javascript': javascript})
<li class="links-list__element"><a id="ctl00_ctl28_g_b9a9f79f_4632_465f_b82a_c1ad07511a2f_ctl04_listItemActionToolbarControlBottom_pagingControl_pagingControl_pageno1" class="element__link" data-unique-id="ctl00$ctl28$g_b9a9f79f_4632_465f_b82a_c1ad07511a2f$ctl04$listItemActionToolbarControlBottom$pagingControl$pagingControl$pageno1" data-pos-x="0" data-pos-y="0" aria-label="Goto Page 1" aria-current="true" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl28$g_b9a9f79f_4632_465f_b82a_c1ad07511a2f$ctl04$listItemActionToolbarControlBottom$pagingControl$pagingControl$pageno1","",true,false,true))">1</a></li>
我不确定这个脚本是否有效。有人可以帮我吗。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。