我试图让scrapy解析页面上的链接来刮擦 . 不幸的是,此页面上的链接包含在JavaScript onclick功能中 . 我想使用SgmlLinkExtractor规则来提取解析JavaScript的链接,并创建用于callback ='parse_item'的URL(如果可能) .
以下是使用JS函数的每个链接的示例:
<a onclick="window.open('page.asp?ProductID=3679','productwin','width=700,height=475,scrollbars,resizable,status');" href="#internalpagelink">Link Text</a>
我只需要链接提取器发送回调parse_item:http://domain.com/page.asp?ProductID=3679
我如何编写CrawlSpider规则来执行此操作?
如果这不可能,那么最终能够解析在定义的一组起始页上嵌入这种JavaScript链接格式的所有页面的最佳方法是什么?
谢谢你们 .
2 回答
您可以使用SgmlLinkExtractor的
attrs
参数 .BaseSgmlLinkExtractor的
process_value
参数:所以你要为“onclick”属性的值写一个解析函数:
让我们检查一下正则表达式:
然后在
Rule
中使用SgmlLinkExtractor
也许
BaseSpider
比CrawlSpider
更合适 .您可以提取要爬网的链接并在
Request
对象中对其进行重新排序,然后发出此Request object
,如下所示: