2015-03-08 22 views
1

我使用Beautifulsoup4來解析網頁。與Bing的工作方式類似,如果您輸入搜索詞,則它將返回前10個匹配,並在第2頁,第3頁等列出的後續頁面上進行後續匹配...查詢確實包含第2頁的超鏈接後返回的第一個頁面直到最後一頁。我想要建立的正是最後一頁(例如,第87頁)。使用Python的網頁表格中的最後超鏈接

下面是從頁面的HTML源代碼的樣本:

<tr><td colspan=4 align=left class='uilt'>����� ������� ��������: 3543.<br>��������: 1 <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=2">2</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=3">3</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=4">4</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=5">5</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=6">6</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=7">7</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=8">8</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=9">9</a> <a href="/main/search.php?str=&tag=&nopass=&cat=25&page=10">10</a> <br></td></tr> 

在上面的例子中,我將如何制定出的最後一個環節是10頁?上面有更多的HTML,所以我不能簡單地從HTML代碼的末尾分割X個位置。

感謝

+0

你需要使用BeautifulSoup嗎?如果你使用Selenium,你不需要它。 – 2015-03-08 22:03:12

+0

我使用Beautifulsoup進行大部分解析,只是使用硒來模擬用戶實際輸入的特定術語 – thefragileomen 2015-03-08 22:04:48

回答

2

如果你問如何找到在所提供的HTML中的最後一個環節與BeautifulSoup - 您可以使用一個CSS Selector

soup.select('td.uilt > a')[-1] 

或者,使用find()find_all()

soup.find('td', class_='uilt').find_all('a')[-1] 

雖然,我同意主題中的其他參與者,不需要BeautifulSoupSelenium本身是一個強大的工具,並有很多techniques to locate elements on a page

2

隨着原材料硒,你應該能夠做這樣的事情:

driver.find_elements_by_css_selector(".uilt a")[-1].text 

這將找到最後<a>標籤作爲元素與uilt類的後代,並返回其文本。不需要BeautifulSoup。

0

首先手動搜索html鏈接的數量。您可以抓住該號碼直接鏈接到最後一頁。如果您找不到最後一個頁碼,那麼您可以從每個搜索結果頁的最後一頁進行抓取。只需遍歷所有鏈接頁面{1 ... 10,11 ... 20,...},直到到達最後一頁,然後執行操作以查找該頁面上的最後一個鏈接。