【问题标题】:Scrape web pages using python使用 python 抓取网页
【发布时间】:2021-05-15 10:30:43
【问题描述】:

我有以下网页

</div><a href="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section" rel="nofollow" class="star-rating-container js-product-url" data-zone="reviews"><div class="star-rating star-rating-read rated-4.02  star-rating-sm  ">
        <div class="star-rating-inner " style="width: 100%"></div>
    </div><div class="star-rating-text ">

我想提取此产品的评分。 对于此产品,评级在此处定义。

<div class="star-rating star-rating-read rated-4.02  star-rating-sm  ">

而且我无法提取 4.02.

我的代码如下:

rating = container.find_all(class_="star-rating star-rating-read rated")[0].text

我知道上面的代码不正确,我可以提取产品的价格和名称但我无法提取评级:(

【问题讨论】:

    标签: python beautifulsoup scrape


    【解决方案1】:

    这是一个您可以尝试的解决方案,

    import re
    
    # regex extract the decimal digits from string
    extract_ = re.compile(r"\d+.\d+") 
    
    for div in container.find_all("div", attrs={"class": 'star-rating'}):
        for attr in div.attrs['class']:
            ratings_ = extract_.search(attr)
    
            if ratings_:
                print(ratings_.group())  # 4.02
    

    【讨论】:

      【解决方案2】:

      试试这样的:

      rating = str(container.find_all(class_="star-rating")[0])
      rindex = rating.index("rated")
      print(rating[rindex+6:rindex+10])
      

      【讨论】:

      • 它可以工作,但是有些产品在对“星”一词进行评级之后,如果评级为整数,则输出将是这样的 5 st 或 4 st,如果评级是像 4 这样的浮点数, 02 输出很好
      • 已解决... score=rating[rindex+6:rindex+10].replace('st', '')
      猜你喜欢
      • 2013-04-29
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2021-12-17
      • 1970-01-01
      • 2021-01-12
      相关资源
      最近更新 更多