Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用巨蟒刮擦美丽的乌苏两个价格_Python_Beautifulsoup_Screen Scraping - Fatal编程技术网

Python 用巨蟒刮擦美丽的乌苏两个价格

Python 用巨蟒刮擦美丽的乌苏两个价格,python,beautifulsoup,screen-scraping,Python,Beautifulsoup,Screen Scraping,我目前正在抓取此网站: https://listado.mercadolibre.com.ve/oficinas-suministros-papeleria-papel-en-aragua/resma-carta-alpes 在将“text”属性应用于decimal price变量之前,我一直是成功的 这是我一直在使用的代码: from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as soup my_

我目前正在抓取此网站:

https://listado.mercadolibre.com.ve/oficinas-suministros-papeleria-papel-en-aragua/resma-carta-alpes

在将“text”属性应用于decimal price变量之前,我一直是成功的

这是我一直在使用的代码:

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

my_url = 'https://listado.mercadolibre.com.ve/oficinas-suministros-papeleria-papel-en-aragua/resma-carta-alpes'

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

page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div", {"class": "item__info-container"})
for container in containers:
    title_container = container.a.text.strip()
    price_container_fraction = container.find("span" ,{"class":"price__fraction"}).text
    price_container_decimal = container.find("span" ,{"class":"price__decimals"})
    print(title_container)
    print(price_container_fraction)
    print(price_container_decimal)
这是html广告块:

<div class="item__info-container ">
    <div class="item__info item--hide-right-col ">
        <h2 class="item__title list-view-item-title"> <a class="item__info-title" href="https://articulo.mercadolibre.com.ve/MLV-523616759-resma-tamano-carta-marca-alpes-caja-_JM"> <span class="main-title"> Resma Tamaño Carta Marca Alpes Caja </span> </a></h2>
        <div class="price__container">
            <div class="item__price "> <span class="price__symbol">Bs.</span> <span class="price__fraction">4</span> <span class="price__decimals">50</span></div>
        </div>
        <div class="item__stack_column">
            <div class="item__stack_column__info item__only-status">
                <div class="stack_column_item status">
                    <div class="item__status">
                        <div class="item__condition"> 2 vendidos </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="stack_colum_right without-attributes without-reviews">
            <div class="stack_column_right__bottom "> </div>
        </div>
    </div>
</div>

学士学位。4 50
2文迪多斯
结果是:


我需要收集价格的2个要素,然后添加它们,但没有运气。有任何帮助吗?

price\u container\u decimal正在打印整个html内容,请添加.text以仅打印十进制值

price_container_decimal = container.find("span" ,{"class":"price__decimals"}).text

问题似乎是
price\u decimals
span并不总是填充,
find
在出现这种情况时返回
None
。我已经向您的代码中添加了以下内容并对其进行了测试,它生成了我猜是您所需的输出。if条件检查
None
如果为真,则将
price\u container\u decimal
设置为
00
,如果不是,则将其设置为跨度的文本属性值

price_container_decimal = container.find("span" ,{"class":"price__decimals"})    
if price_container_decimal == None:
    price_container_decimal = "00"
else:
    price_container_decimal = container.find("span" ,{"class":"price__decimals"}).text

你能公布预期的产出吗?