python - BeasutifulSoup4 中的导航

标签 python html web-scraping beautifulsoup

我需要从几个片段中提取文本(在给定的情况下为“325”和“550”)。我该如何使用 python 3.6.0、bs4、urllib 来解决它。我会将获得的数据添加到 csv 文件中。

<div class="a-row a-spacing-none">
    <a class="a-link-normal a-text-normal" href="https://www.amazon.in/Game-Thrones-Song-Ice-Fire/dp/0007428545">
        <span class="a-size-small a-color-secondary">
        </span>

        <span class="a-size-base a-color-price s-price a-text-bold">

            <span class="currencyINR">  
            </span>
        325
        </span>

    </a>
    <span class="a-letter-space">
    </span>

    <span aria-label='Suggested Retail Price: &lt;span class="currencyINR"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;550' class="a-size-small a-color-secondary a-text-strike">
        <span class="currencyINR"> 
        </span>
    550
    </span>

 </div>

我试过使用以下代码,但无法删除伴随它的 span 标签:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup


my_url = 'https://www.amazon.in/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=a+song+of+ice+and+fire'
# opening up connection, grabbing thr page

uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()


# html parsing
page_soup = soup(page_html, "html.parser")


# grabs each product
containers = page_soup.findAll("div", {"class":"s-item-container"})
contain = containers[0]
price = contain.findAll("span", {"class":"a-size-base a-color-price s-price a-text-bold"})
current_price = price[0].text.strip()

最佳答案

对于初学者,您可以选择所有具有 currencyINR 类的 span 元素。

currency = contain.find('span', attrs={"class":"currencyINR"})

price = currency.nextSibling.strip()

关于python - BeasutifulSoup4 中的导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053129/

相关文章:

python - xpath:如何在 <strong> 元素之前、之中和之后提取文本

python - 更改背景颜色后如何保存 Matplotlib 图形?

python - 访问共享点列表时 token 不清楚

javascript - 删除 id 会杀死页面上的所有 javascript

html - 最大限度。文本行数;这种方法可靠吗?

python - 导出至 CSV 文件

asp.net - 网页抓取一个棘手的 asp.net 页面

python - m2m 字段上的 post_save 信号

python - wait queue.put(item) 到 asyncio.Queue 上似乎没有释放事件循环的控制

javascript - 使用 Jquery 进行图像交换