【问题标题】:How to extract divs and classes如何提取 div 和类
【发布时间】:2018-12-09 12:54:33
【问题描述】:

我是 Python 新手,我需要为我的第一个爬虫获取标题、isbn、价格和发布日期。

 <div class="col-md-7 col-sm-7">
                <h4><a href="https://www.fadavis.com/product/anatomy-physiology-pocket-AP-jones-3">Pocket Anatomy and Physiology, 3rd Edition</a></h4>
                <div>Shirley A. Jones</div>
                <div>ISBN-13: 978-0-8036-5658-1</div>
                <p class="price"> $39.95 (US)</p>

                <div class="prd_lst">
                  <ul class="book_list">

                  </ul>
                 <div class="mobile_add_tocart">
                      <button type="button" class="addtocart" onclick="window.location.href='https://shoppingcart.fadavis.com/ShoppingCart/AddToCart?guid=74779e63-ccfb-454e-a6b9-b4e9f9a50793&amp;productid=10959&amp;applicationid=5'"> <span class="cart_icon sprite pull-left"></span>Add to Cart</button>

                  </div>



                   <div class="popover bottom Available_tooltip"><div class="arrow"></div>
                        <div class="popover-content">
                                <ul class="book_list">

                                </ul>
                                <div class="clearfix"></div>
                        </div>
                   </div>                

                  <div class="clearfix"></div>
                </div>
                <p>Publication Date: 10/12/2016</p>
                <div class="available active">
                  <div class="available_icon sprite pull-left"></div>
                  Available</div>
              </div>

【问题讨论】:

  • 注意:这里的读者真的想提供帮助,他们知道对于初学者来说,事情很困难。然而,读者也意识到有一群人很懒惰,并以初学者为幌子想要免费工作。因此,作为问题作者,您的工作是将您的问题与其他问题区分开来。一种方法是展示你所做的努力,即使它不起作用。这里的读者真的欣赏个人的努力。

标签: python web-scraping beautifulsoup


【解决方案1】:
import bs4

html = """
<div class="col-md-7 col-sm-7">
    <h4><a href="https://www.fadavis.com/product/anatomy-physiology-pocket-AP-jones-3">Pocket Anatomy and Physiology, 3rd Edition</a></h4>

    <div>Shirley A. Jones</div>
    <div>ISBN-13: 978-0-8036-5658-1</div>
    <p class="price"> $39.95 (US)</p>

    <div class="prd_lst">
        <ul class="book_list">

        </ul>
        <div class="mobile_add_tocart">
            <button type="button" class="addtocart" onclick="window.location.href='https://shoppingcart.fadavis.com/ShoppingCart/AddToCart?guid=74779e63-ccfb-454e-a6b9-b4e9f9a50793&amp;productid=10959&amp;applicationid=5'"> <span class="cart_icon sprite pull-left"></span>Add to Cart</button>

        </div>



        <div class="popover bottom Available_tooltip"><div class="arrow"></div>
            <div class="popover-content">
                    <ul class="book_list">

                    </ul>
                    <div class="clearfix"></div>
            </div>
        </div>

        <div class="clearfix"></div>
    </div>
    <p>Publication Date: 10/12/2016</p>
    <div class="available active">
        <div class="available_icon sprite pull-left"></div>
        Available</div>
    </div>
</div>
"""

soup=bs4.BeautifulSoup(html,'lxml')
div = soup.find('div', {'class': 'col-md-7'})
divs = div.findAll('div')
price = div.find('p', {'class': 'price'})
date = div.findAll('p')

print(divs[0].text)
print(divs[1].text)
print(price.text)
print(date[-1].text)

输出

Shirley A. Jones
ISBN-13: 978-0-8036-5658-1
$39.95 (US)
Publication Date: 10/12/2016

【讨论】:

  • 感谢您的帮助,但是当我将此代码用于整个页面时,它会返回错误: HTTPError:HTTP 服务器返回了一个重定向错误,这将导致无限循环。最后 30x 错误消息是:Found fadavis.com/health_professions/Anatomy-and-Physiology
  • import bs4 from urllib.request import urlopen html = urlopen("fadavis.com/health_professions/Anatomy-and-Physiology") soup=bs4.BeautifulSoup(html,'lxml') div = soup.find('div', {'class ': 'col-md-7.col-sm-7'}) divs = div.findAll('div') price = div.find('p', {'class': 'price'}) date = div .findAll('p') print(divs[0].text) print(divs[1].text) print(price.text) print(date[-1].text)
  • 实际上,我想从fadavis.com 获取所有 ISBN、Price...,但我不知道如何深入页面,所以我从单个页面开始,例如:fadavis.com/health_professions/Anatomy-and-Physiology跨度>
  • 我无法获得 fadavis.com 它无法加载
  • 文件“D:\Anaconda\lib\urllib\request.py”,第 532 行,打开响应 = meth(req, response) 文件“D:\Anaconda\lib\urllib\request. py",第 642 行,在 http_response 'http',请求,响应,代码,msg,hdrs) 文件 "D:\Anaconda\lib\urllib\request.py",第 564 行,错误结果 = self._call_chain(* args) 文件“D:\Anaconda\lib\urllib\request.py”,第 504 行,在 _call_chain 结果 = func(*args) 文件“D:\Anaconda\lib\urllib\request.py”,第 746 行,在http_error_302 self.inf_msg + msg, headers, fp) 页面在浏览器上运行流畅。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2018-06-06
  • 1970-01-01
相关资源
最近更新 更多