抓取分页Selenium python

2024-10-06 06:44:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用分页的方法从表中删除链接。我可以让Selenium迭代页面,也可以获取第一页的链接,但是如果我尝试将两者结合起来,当我到达最后一页时,不再有下一页按钮,过程停止,我什么也得不到。在

我不确定如何优雅地告诉它,只需将数据返回到csv。我正在使用一个while true:循环,所以这让我很困惑。在

另一个问题与我试图使用xpath解析的链接有关。链接保存在两个不同的tr-类中。一个集合在//tr[@class ="resultsY"]下,另一个在//tr[@class ="resultsW"]下,有没有某种类型的OR语句可以一次针对所有链接?在

我找到了一个解决方案: '//tr[@class ="resultsY"] | //tr[@class ="resultsW"]'每次都给我一个错误。在

以下是html表格:

<tr class="resultsW">
-<td></td>
-<td>
----<a href="fdafda"></a>        <----a link i'm after
-<td>
-<td></td>
</tr>
<tr class="resultsW">
-<td></td>
-<td>
----<a href="fdafda"></a>        <----a link i'm after
-<td>
-<td></td>
</tr>

这是我的下脚料:

^{pr2}$

Tags: 方法链接seleniumlink页面按钮trclass
1条回答
网友
1楼 · 发布于 2024-10-06 06:44:30

把这篇文章分成三篇会增加你得到好答案的机会。在

对于第一个问题,更准确地了解“过程停止,我什么也得不到”的含义会很有帮助。我没看到你试图写一个文件的“链接”。我不明白你为什么要做你在else子句中所做的事情。在

对于第二个问题,使用正则表达式可能可以解决问题。见this。在

对于第三个问题,因为元素title是列表

titles = self.driver.find_elements_by_xpath('//tr[@class ="resultsW"]')

你可以这么做

hrefs=[]
for titles in titles:
    href = titles.find_element_by_xpath('a').get_attribute('href')
    hrefs.append(href)

另外,如果您所要做的只是从页面上获取链接,请考虑mechanizelxml.html和{}。在

相关问题 更多 >