Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用javascript刮取弹出窗口中呈现的内容:使用scrapy的链接_Python_Ajax_Selenium_Web Scraping_Scrapy - Fatal编程技术网

Python 如何使用javascript刮取弹出窗口中呈现的内容:使用scrapy的链接

Python 如何使用javascript刮取弹出窗口中呈现的内容:使用scrapy的链接,python,ajax,selenium,web-scraping,scrapy,Python,Ajax,Selenium,Web Scraping,Scrapy,我正在尝试使用scrapy,仅在单击javascript:link之后才能呈现内容。由于链接似乎没有遵循系统的编号方案,我不知道如何使用 1-激活javascript:链接以展开折叠的面板 2-激活一个(现在可见的)javascript:link,使弹出窗口呈现,以便可以刮取其内容(摘要) 该网站包含将在我计划参加的会议上发表的摘要链接。该站点导出到PDF的过程存在缺陷,因为它在生成PDF时复制了大量数据。我没有处理这个bug,而是求助于scrapy,结果才意识到我已经陷入了困境。我读过: 及

我正在尝试使用scrapy,仅在单击javascript:link之后才能呈现内容。由于链接似乎没有遵循系统的编号方案,我不知道如何使用

1-激活javascript:链接以展开折叠的面板

2-激活一个(现在可见的)javascript:link,使弹出窗口呈现,以便可以刮取其内容(摘要)

该网站包含将在我计划参加的会议上发表的摘要链接。该站点导出到PDF的过程存在缺陷,因为它在生成PDF时复制了大量数据。我没有处理这个bug,而是求助于scrapy,结果才意识到我已经陷入了困境。我读过:

但我不认为我能把这些点联系起来。我也看到有人提到Selenium,但我不确定我是否必须求助于它

我几乎没有取得什么进展,我想知道我是否能在掌握以下信息的情况下朝着正确的方向前进:

为了发出将展开折叠面板(上面的项目1)的POST请求,我跟踪到页面JS javascript:showCollapsablePanel(11611141695,44191);将导致对TARGETURLOFWEBSITE/EventSessionAjaxService/GetSessionDetailsHtml的POST请求,有效负载为:

{“eventSessionID”:116114,“eventSessionWebSiteSetupViewID”:191}

eventSessionID和eventSessionWebSiteSetupViewID的参数清楚地显示在javascript:showCollapsablePanel文本中

如何使用scrapy来迭代表单javascript:ShowCollapsablePanel的所有链接?我尝试使用SGMLLinkedExtractor,但没有返回任何javascript:showCollapsablePanel()链接——我怀疑它们不符合“链接”的标准

更新

在取得进展的同时,我发现SGMLLinkedExtractor不是正确的方法,而且更简单:

sel.xpath('//a[contains(@href,“javascript:showcollapsablepanel”))).re('((\d+)\,(\d+),(\d+),(\d+),(\d+))

in-scrapy控制台返回每个javascript的所有数值参数:showCollapsablePanel()(当然,现在它们都在一个长字符串中,但我只是在控制台中胡闹)


下一步将采用第一个javascript:showCollapsablePanel()生成POST请求并分析响应,以查看响应是否包含我在单击浏览器中的链接时看到的内容。

我遇到了类似的问题,在多次拔掉头发后,我用import.io提取了所需的数据集,该数据集具有可视类型刮刀,但能够在启用javascript的情况下运行,这正是我所做的我需要而且它是免费的。我昨晚在《刮痧》的git hub上也看到了一个叉子,看起来就像它所称的导入io刮刀……给我一分钟 波西亚,但我不知道它是否能满足你的要求
很好

您需要使用开发人员工具调查页面,查看ajax请求的去向,并对该内容提出请求。通过对页面的简要调查,可以看出该页面正在发出POST请求以获取所有抽象细节,然后是另一篇POST以获取特定抽象。您需要在爬行器中模拟这种行为。首先提取POST段落来自伪链接的ms,然后发出post请求。尝试执行此操作,如果遇到问题,请使用您使用的代码更新您的问题(为此编写代码可能需要一段时间,所以请耐心等待)。添加更多信息-我仍然遇到问题,希望您能向正确的方向推动。