【问题标题】:Extract max site number from web page从网页中提取最大站点数
【发布时间】:2021-05-07 11:05:11
【问题描述】:

我需要来自propertyes web site 的 ixtract 最大页码。屏幕:。 我的代码:

import requests
from bs4 import BeautifulSoup

URL = 'https://www.nehnutelnosti.sk/vyhladavanie/'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(id = 'inzeraty')

sitenums = soup.find_all('ul', class_='component-pagination__items d-flex align-items-center')
sitenums.find_all('li', class_='component-pagination__item')

我的代码返回错误:

AttributeError: ResultSet object has no attribute 'find_all'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

感谢您的帮助。

【问题讨论】:

    标签: python-3.x web-scraping beautifulsoup python-requests


    【解决方案1】:

    您可以使用css selector 并从末尾获取第二个值。

    方法如下:

    import requests
    from bs4 import BeautifulSoup
    
    css = ".component-pagination .component-pagination__item a, .component-pagination .component-pagination__item span"
    page = requests.get('https://www.nehnutelnosti.sk/vyhladavanie/')
    soup = BeautifulSoup(page.content, 'html.parser').select(css)[-2]
    print(soup.getText(strip=True))
    

    输出:

    2309
    

    【讨论】:

      【解决方案2】:

      类似的想法,但在 css 选择器中进行更快的过滤而不是索引,使用 nth-last-child

      :nth-last-child() CSS 伪类根据元素匹配元素 在一组兄弟姐妹中的位置,从末尾开始计数。

      import requests
      from bs4 import BeautifulSoup as bs
      
      r = requests.get('https://www.nehnutelnosti.sk/vyhladavanie')
      soup = bs(r.text, "lxml")
      print(int(soup.select_one('.component-pagination__item:nth-last-child(2) a').text.strip()))
      

      【讨论】:

        猜你喜欢
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 2018-04-03
        • 2018-04-12
        • 2015-08-26
        • 1970-01-01
        • 2020-04-28
        • 2016-02-27
        相关资源
        最近更新 更多