2015-03-08 21 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,...},直到到达最后一页,然后执行操作以查找该页面上的最后一个链接。