【问题标题】:looping through page number links with selenium issue循环使用硒问题的页码链接
【发布时间】:2019-04-28 03:36:43
【问题描述】:

我正在使用 python 3.6 中的硒和美丽的汤。我正在尝试单击页脚或页面中列出的页面。每次我单击页脚中的数字时,都会转到下一页。然后我从元素中抓取一些数据并将其添加到列表中。下面的代码一切正常,直到我点击 8,其中下一个跨度只包含“...”而不是数字。您必须单击“...”,然后在页脚中添加更多数字。任何有关如何处理此问题的提示将不胜感激。

代码:

soup = BeautifulSoup(driver.page_source)

emptLst=[item['href'] for item in soup.select('a.job-card-search__link-wrapper')]

for i in range(int(round(503/14))):

    driver.find_element_by_css_selector('[aria-label="Page '+str(i+1)+'"]').click()

    LnkLst = [item['href'] for item in soup.select('a.job-card-search__link-wrapper')]

    emptLst+LnkLst


    time.sleep(3)

页面来源:

<section class="search-results-pagination-section">
                      <artdeco-pagination class="artdeco-pagination    pv5">
<!---->
    <ul class="artdeco-pagination__pages artdeco-pagination__pages--number">
          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number active selected">
    <span>1</span>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 2" data-ember-action="" data-ember-action-255="255">
      <span>2</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 3" data-ember-action="" data-ember-action-258="258">
      <span>3</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 4" data-ember-action="" data-ember-action-261="261">
      <span>4</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 5" data-ember-action="" data-ember-action-264="264">
      <span>5</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 6" data-ember-action="" data-ember-action-267="267">
      <span>6</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 7" data-ember-action="" data-ember-action-270="270">
      <span>7</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 8" data-ember-action="" data-ember-action-273="273">
      <span>8</span>
    </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number">
  <button data-ember-action="" data-ember-action-276="276" data-is-animating-click="true">
    <span>…</span>
  </button>
</li>

          <li class="artdeco-pagination__indicator artdeco-pagination__indicator--number ">
    <button aria-label="Page 23" data-ember-action="" data-ember-action-279="279">
      <span>23</span>
    </button>
</li>

    </ul>

<!----></artdeco-pagination>


                    </section>

【问题讨论】:

  • 可以分享一下网址吗?下面给出的答案可能是一种方法。通常,当您靠近省略号 (...) 时,分页上的编号会更新,因此您可能需要考虑这一点。如果有下一步按钮,您可以单击该按钮,直到达到已知页数。

标签: python-3.x selenium beautifulsoup selenium-chromedriver


【解决方案1】:

如果可能,我建议手动为新页面构建 URL。许多网站会简单地更改 url 中的附加参数以获取页码。

例如,我们可以查看 Urban Outfitters 网站。普通服装部分是分页的,第一页网址看起来像(我在这里查看销售类别):

https://www.urbanoutfitters.com/sale

如果我查看销售商品第二页的 url,我发现他们只是在 url 中添加了一个额外的参数:

https://www.urbanoutfitters.com/sale?page=2

对于除第一个页面之外的任何其他页面,这种情况都会类似地继续。我遇到了与您正在处理的问题类似的问题,发现这种方法更容易且不易出错。

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 2013-02-18
    • 1970-01-01
    • 2021-04-13
    • 2012-05-02
    • 2014-04-12
    • 1970-01-01
    • 2019-04-08
    • 2019-04-03
    相关资源
    最近更新 更多