使用Python的网页表中的最后一个超链接

时间:2015-03-08 21:44:30

标签: python python-2.7 selenium beautifulsoup

我正在使用Beautifulsoup4来解析网页。与Bing的工作方式类似,如果您输入一个搜索词,它将返回前十个点击,后续页面在第2页,第3页等列出的后续点击...查询后返回的第一页确实包含第2页的超链接直到最后一页。我想要建立的正是最后一页的内容(例如,第87页)。

以下是该页面的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个位置。

谢谢

3 个答案:

答案 0 :(得分:2)

使用原始Selenium,您应该可以执行以下操作:

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

这将找到最后一个<a>标记,该标记是具有类uilt的元素的后代并返回其文本。不需要BeautifulSoup。

答案 1 :(得分:2)

如果您询问如何使用BeautifulSoup查找提供的HTML中的最后一个链接 - 您可以使用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 :(得分:0)

首先手动搜索html以获取链接数。您可以抓住该号码直接链接到最后一页。如果您无法找到最后一页的页码,则可以从每个搜索结果页面的最后一页抓取。只需遍历所有链接页面{1 ... 10,11 ... 20,...},直到到达最后一页,然后执行操作以找到该页面上的最后一个链接。