【问题标题】:Move onto next class with same name in Web Scraper移动到 Web Scraper 中具有相同名称的下一个类
【发布时间】:2020-04-22 06:33:01
【问题描述】:

我的想法是建立一个市场抓取工具,在那里我可以找到我喜欢的物品,在这种特殊情况下是磁带,问题是当我 soup.find(attrs="NameOfTheClass") 时,

打印值与顶部结果相同,我想查看页面上的所有产品。

我尝试了一个 while 循环,但它一直返回相同的最高值。

import requests
from bs4 import BeautifulSoup
import time

URL = 'https://listado.mercadolibre.com.ar/cassette#D[A:cassette]'


headers = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'}

page = requests.get(URL, headers=headers)

soup = BeautifulSoup(page.content, 'html.parser')
try:
    while True:
        title = soup.find(attrs={'main-title'})
        price = soup.find(attrs=('price__fraction'))
        print(title,price)
        time.sleep(1)
except KeyboardInterrupt:
    print('done')


【问题讨论】:

  • 答案对你有用吗?

标签: python beautifulsoup python-requests


【解决方案1】:

尝试使用 find_all 方法

它应该返回一个包含该类的所有元素的列表。 然后你可以遍历那个列表

【讨论】:

    【解决方案2】:

    尝试使用 CSS 选择器

    例子

    import requests
    from bs4 import BeautifulSoup
    
    URL = 'https://listado.mercadolibre.com.ar/cassette#D[A:cassette]'
    
    headers = {
        "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/81.0.4044.113 Safari/537.36'}
    
    page = requests.get(URL, headers=headers)
    
    soup = BeautifulSoup(page.text, 'html.parser')
    
    span = soup.select("span.main-title")
    div = soup.select("div.price__container")
    
    
    def get_title_and_price(span, div):
        for i, item in enumerate(span):
            title = item.getText()
            price = div[i].getText()
            print(title)
            print(price)
    
    
    get_title_and_price(span, div)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2011-11-20
      • 2011-09-16
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多