【问题标题】:Python with Selenium : pagination issue带有 Selenium 的 Python:分页问题
【发布时间】:2017-06-13 15:32:47
【问题描述】:

我正在尝试在 Python 中使用 Selenium 进行抓取,我正在尝试通过单击递增数字按钮来循环访问 bigkinds.or.kr 上的登录页面。

根据 Chrome Inspector,下一页位于以下 HTML 中:

<div class="newsPage">
    <div class="btmDelBtn"> 
                             ...</div>
<span>
<a href="javascript:void(0);" class="current">1</a>
<a href="javascript:void(0);" onclick="getSearchResultNew(2)">2</a>
<a href="javascript:void(0);" onclick="getSearchResultNew(3)">3</a>
<a href="javascript:void(0);" onclick="getSearchResultNew(4)">4</a>
<a href="javascript:void(0);" onclick="getSearchResultNew(5)">5</a>
<a href="javascript:void(0);" onclick="getSearchResultNew(6)">6</a>
</span>

我没有通过单击下一页来成功抓取。请帮我。 这是我的代码:

url = "https://www.bigkinds.or.kr/main.do"
browser.get(url)

...

currentPageElement = browser.find_element_by_xpath("//*[@id='content']/div/div/div[2]/div[7]/span/a[2]")

print(currentPageElement)

currentPageNumber = int(currentPageElement.text)

print(currentPageNumber)

在 xpath 中,“/span/a[2]”是页码。如何为这个 xpath 制作循环。

【问题讨论】:

  • 1.您正在尝试将元素的文本转换为整数:int(currentPageElement.text)。 2. 即使问题是关于点击,你也永远不会在代码的任何地方调用click() 方法。
  • 在 xpath 中,“/span/a[2]”是页码。如何为这个 xpath 制作循环。

标签: python selenium pagination


【解决方案1】:

尝试使用以下代码:

from selenium.common.exceptions import NoSuchElementException

url = "https://www.bigkinds.or.kr/main.do"
browser.get(url)
page_count = 1
while True:
    # Increase page_count value on each iteration on +1
    page_count += 1
    # Do what you need to do on each page
    # Code goes here
    try:
        # Clicking on "2" on pagination on first iteration, "3" on second...
        browser.find_element_by_link_text(str(page_count)).click()
    except NoSuchElementException:
        # Stop loop if no more page available
        break

更新

如果您仍想使用XPath 搜索,则可能需要替换行

browser.find_element_by_link_text(str(page_count)).click()

带线

browser.find_element_by_xpath('//a[@onclick="getSearchResultNew(%s)"]' % page_count).click()

...或者如果你想使用你的绝对XPath(不是最好的主意),你可以试试

browser.find_element_by_xpath("//*[@id='content']/div/div/di‌​v[2]/div[7]/span/a[%s​]" % page_count).click()

【讨论】:

  • 谢谢。但我想知道 xpath 中越来越多的数字。 currentPageElement = browser.find_element_by_xpath("//*[@id='content']/div/div/div[2]/div[7]/span/a[2]")跨度>
  • 欢迎。如果它解决了您的问题,您可以将我的回答标记为已接受
猜你喜欢
  • 2021-01-04
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 2013-12-29
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多