Web scraping 漂亮的汤4,芬德尔

Web scraping 漂亮的汤4,芬德尔,web-scraping,beautifulsoup,Web Scraping,Beautifulsoup,我的密码是 from urllib.request import urlopen as uReq from bs4 import BeautifulSoup as soup my_url=https://www.chembid.com/results/?q=124-07-2&sort=price my_url='https://www.chembid.com/results/?q=124-07-2&sort=price' # opening up connection gra

我的密码是

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

my_url=https://www.chembid.com/results/?q=124-07-2&sort=price
my_url='https://www.chembid.com/results/?q=124-07-2&sort=price'

# opening up connection grapping the page
uClient=uReq(my_url)
page_html=uClient.read()
uClient.close()

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


for Container in Containers:
        name=Container.div.div.span

        title_container=Container.findAll("a",{"class":"supplier"})
        supplier=title_container[0].text
我现在要做的是使用bs4查找DALL

>>> cas_no=Container.findAll("span",{"class":"regular-small-regular-small-font block"})
在此代码中

工厂供应用于染料、药物、香料制造的高质量99%最小辛酸/辛酸CAS 124-07-2 验证器-安比特--> --> 山东宝维能源科技有限公司。 中国 CAS-编号:124-07-2 质量/等级:农业级、电子级、食品级、工业级、医药级、试剂级 阿里巴巴网 $0.25 - 3.68 每公斤离岸价 显示报价 我想找到的是名称、供应商、Cas号、质量和价格


谢谢

所以我看到的第一件事是您试图迭代您的
容器
对象,但从未将其存储为任何内容。因此,在迭代之前,您需要将其存储起来

希望有人会发布一个更健壮的解决方案,但就拉取的内容和您作为输出请求的内容而言,这将从特定页面中拉取它。有一些部分不存在,所以我必须解释这些部分,如果它们不存在,就有一个空值。尽管如此,这应该会让你继续:

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

results = pd.DataFrame()

my_url='https://www.chembid.com/results/?q=124-07-2&sort=price'

# opening up connection grapping the page
uClient=uReq(my_url)
page_html=uClient.read()
uClient.close()

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

containers = page_soup.find_all('div', {'class':"result-horizontal-wrapper"})


for container in containers:

    name = container.div.div.span.text
    if container.find('a' , {'class':'supplier'}):
        supplier = container.find('a' , {'class':'supplier'}).text
    else:
        supplier = 'n/a'

    span_cas_qulity = container.find_all('span', {'class':'regular-small-font block'})

    cas_no = [x.text for x in span_cas_qulity if 'CAS' in x.text]
    quality = [x.text for x in span_cas_qulity if 'Quality/Grade' in x.text]

    if cas_no != []:
        cas_no = cas_no[0]
    else:
        cas_no = None

    if quality != []:
        quality = quality[0]
    else:
        quality = None

    span_price = container.select('span.black-bold-font-big')[0].text
    span_rate = container.select('span.block.regular-small-font.price')[0].text

    temp_df = pd.DataFrame([[name, supplier, cas_no, quality, span_price, span_rate]], columns = ['name','supplier','cas_no','quality','price','rate'])

    results = results.append(temp_df).reset_index(drop = True)

你好你真的应该提供你尝试/做过的事情的完整代码。你说你试过findAll,但我不知道在哪里,怎么做。另外,您是如何获得HTML的?如果你做了一些像requests.get(url)这样的事情,然后包括它,你不需要在这里粘贴整个html文本,我们可以通过这种方式获得它。>>>cas_no=Container.findAll(“span”,{“class”:“black bold font block”})for Containers in Containers:name=Container.div.div.span像这样还是有意义?更好,但是现在返回并通过编辑将其添加到原始帖子中。尽可能多地包含代码。在开始之前,展示你所有的步骤。就像我看到你有
容器一样。再说一遍,这是从哪里来的?最好(至少对我来说)有尽可能多的上下文和支持信息,我不能从我哭喊着要抓取的网页中添加代码。。。Stackflows不允许我发布代码量