我想在这个网站上抓取新闻:new.scut.edu.cn
但是在它的子网站,比如this,右下角的下一个页面(中文的第一个)url是由javascript生成的。下一页的html源代码是<a name="_l_p_n" href="javascript:if(true){a_next('/s/22/t/4/p/69/c/7/i//list.htm');}" title="进入下一页">下一页</a>
,引用脚本是
var _currentPageIndex =346;
var _listArticleCount =-1;
var _listPaginationCount =-1;
function a_next(url) {
if(_currentPageIndex > 1) {
location.href =url.replace('i/','i/'+(_currentPageIndex-1));
}
}
我要抓取所有页面,所以蜘蛛需要跟随下一页。这是我的小蜘蛛代码:
^{pr2}$我发现当前页面的url和下一个页面的url只有一个数字不同。 我知道有一些解决方案,可以模拟javascript逻辑或者使用selenium和phantomjs之类的库。我如何通过模拟js逻辑的方式来修复这些糟糕的spider代码以跟踪下一页?需要改变蜘蛛屑规则吗?以硒或幻影的方式呢? 提前谢谢
我想提出一种不渲染javascript,而是从页面中提取javascript信息的方法。在
您可以在
list-pages
之后向您的Rule
添加一个parse_list
回调并在回调中实现一个regex来解析
^{pr2}$javascript
并获得(列表的)总页数:如果有一个
page_Number
,你可以在一个循环中创建所有的页码链接(一直到第一页),并将这些requests
传递给爬虫程序。在上面显示的代码不起作用,但可以作为起点。在
相关问题 更多 >
编程相关推荐