2017-05-08 55 views
0

当我运行我的刮板来获取下一页的href链接时,我可以看到它提取[javascript:void(0);]而不是传统的href。无论如何,我无法使用它。如果有人仔细研究并提供解决方法,会很开心。我正在使用的代码:分页链接被刮掉的项目并不常见href

import requests 
from lxml import html 
url="http://www.findanarchitect.com.au/index.php" 
def Endpoint(Address): 
    payload = {'action':'show_search_result','action_spam':'dDfgEr','txtSearchType':5,'txtPracName':'','optSstate':3,'optRegions':23,'txtPcode':'','txtShowBuildingType':0,'optBuildingType':1,'optHomeType':1,'optBudget':''} 
    response = requests.post(Address, data = payload) 
    tree=html.fromstring(response.text) 
    titles=tree.xpath('//div[@id="pagination"]') 
    for title in titles: 
     Links=title.xpath('.//li[@class]/a/@href') 
     for Link in Links: 
      print(Link) 

Endpoint(url) 

HTML元素驻留内:

<div id="pagination"> 
<br><div style="float:left">Page 1 of 23 &nbsp;</div> 
<ul> 
    <li class="current"><a href="javascript: void(0);" onclick="js_goto_page(1)">1</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(2)">2</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(3)">3</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(4)">4</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(5)">5</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(6)">6</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(7)">7</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(8)">8</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(9)">9</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(10)">10</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(11)">[11-20]</a></li><li class=""><a href="javascript: void(0);" onclick="js_goto_page(21)">[21-23]</a></li> 
</ul> 

</div> 

结果我得到:

enter image description here

回答

0

js_go_to_page功能存在于HTML

/* 
* Go to Page 
*/ 
function js_goto_page(page_no) 
{ 
    $('#idCurPageNo').val(page_no); 
    action = "action=ajax_goto_page"; 
    furl = '/index.php?'+action+'&page_no='+page_no+'&search_type='+$('#idSubSearchType').val(); 
    $.ajax({ 
      type: "GET", 
      url:furl, 
      cache :false, 
      async:false, 
      dataType:'json', 
      success: function(data) 
        { 
         $('#archWrapper').html(data.html); 
         $('#pagination_bottom').html(data.pagination_tab); 
         //$("html").animate({ scrollTop: 0 }); 
         $("html").scrollTop(0); 

        } 
     }); 
} 

您需要在您的搜寻器代码中重现furl变量的内容,这非常明显,因为action是静态的,page_no是您想要获取的页面的编号,$('#idSubSearchType').val()可以通过html解析器读取。

+0

谢谢VMRuiz,为你解答。我的头旋转着看你的代码。它是用JavaScript编写的吗?我已经通过放弃JavaScript标记来纠正我的帖子,因为JavaScript中的编码超出了我的能力。 – SIM

+0

是的,它的JavaScript,但你不需要编写任何代码。您只需要按照与该脚本相同的方式生成下一页的URL。看看'furl'的行 – VMRuiz