2016-04-18 14 views
0

Ich möchte alle Titel() auf der Website zu bekommen.Scraping 'N' Seiten mit Beautifulsoup und Anfragen (So erhalten Sie die wahre Seitenzahl)

http://www.shyan.gov.cn/zwhd/web/webindex.action 

Jetzt scrappt mein Code erfolgreich nur eine Seite. Es gibt jedoch mehrere Seiten auf der oben genannten Website, in denen ich gerne kratzen würde.

Zum Beispiel, mit der obigen URL, wenn ich den Link zu "Seite 2" klicken, ändert sich die allgemeine URL nicht. Ich schaute auf die Seitenquelle und sah JavaScript-Code, um auf die nächste Seite wie folgt voranzuschreiten: javascript: gotopage (2) oder javascript: void (0). Mein Code ist hier (get Seite 1)

from bs4 import Beautifulsoup 
import requests 
url = 'http://www.shyan.gov.cn/zwhd/web/webindex.action' 
r = requests.get(url) 
soup = Beautifulsoup(r.content,'lxml') 
titles = soup.select('td.tit3 > a') 
for title in titles: 
    print(title.get_text()) 

Wie kann mein Code geändert werden Titel aus allen verfügbaren aufgelisteten Seiten zu kratzen? Vielen Dank!

+0

Vielen Dank! Aber ich kann nicht die nächste Seite entweder.My Code ist unten.Bitte helfen Sie mir, es zu ändern. –

Antwort

1

Versuchen Sie, die folgende URL-Format zu verwenden:

http://www.shiyan.gov.cn/zwhd/web/webindex.action?keyWord=&searchType=3&page.currentpage=2&page.pagesize=15&page.pagecount=2357&docStatus=&sendOrg=

Die Website Javascript verwendet versteckt passieren Seite Informationen an den Server die nächste Seite anzufordern. Wenn Sie die Quelle anzeigen, finden Sie:

<form action="/zwhd/web/webindex.action" id="searchForm" name="searchForm" method="post"> 
<div class="item"> 
    <div class="titlel"> 
     <span>留言查询</span> 
    <label class="dow"></label> 
    </div> 
    <input type="text" name="keyWord" id="keyword" value="" class="text"/> 
    <div class="key"> 
     <ul> 
      <li><span><input type="radio" checked="checked" value="3" name="searchType"/></span><p>编号</p></li> 
      <li><span><input type="radio" value="2" name="searchType"/></span><p>关键字</p></li> 
     </ul>  
    </div> 
    <input type="button" class="btn1" onclick="search();" value="查询"/> 
    </div> 
    <input type="hidden" id="pageIndex" name="page.currentpage" value="2"/> 
    <input type="hidden" id="pageSize" name="page.pagesize" value="15"/> 
    <input type="hidden" id="pageCount" name="page.pagecount" value="2357"/> 
    <input type="hidden" id="docStatus" name="docStatus" value=""/> 
    <input type="hidden" id="sendorg" name="sendOrg" value=""/> 
    </form> 
+0

Danke, das ist eine gute Wahl. Es ist leichter zu verstehen als Selen. –

+0

@vassilo Wie sind Sie auf diese URL gekommen (in Bezug auf die Formatierung der versteckten Elemente in der URL)? – Phillip

+1

Ich benutze DevTools von Google Chrome, um die Anfragen der Webseite zu prüfen, wenn ich auf den Link einer nächsten Seite klicke. Identifizieren Sie die entsprechende Anfrage und Sie können loslegen. – vassilo