2017-05-08 57 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