Прекрасный суп 4, найди все - PullRequest
0 голосов
/ 06 декабря 2018

Мой код такой

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, чтобы найти все

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

в этом коде

Фабрика поставляет высококачественные 99%мин Октановая кислота / каприловая кислота CAS 124-07-2, используемая в производстве красителей, лекарств, специй. Verifizierter Anbieter -> -> Shandong Baovi Energy Technology Co., Ltd. CChina CAS-Номер: 124-07-2Качество / Класс: Сельскохозяйственный класс, Электронный класс, Пищевой, Промышленный, Медицинский, Реагентный www.alibaba.com $ 0,25 - 3,68 за килограмм, FOB Показать предложение

И что я пытаюсь найти, так это имя, поставщик,Cas-нет, качество и цена.

Спасибо

1 Ответ

0 голосов
/ 06 декабря 2018

Итак, первое, что я вижу, это то, что вы пытаетесь перебрать свой Containers объект, но никогда не сохраняли это как что-либо.Таким образом, вам нужно сохранить это, прежде чем выполнять итерацию.

надеюсь, кто-то опубликует более надежное решение, но с точки зрения того, что извлекается и что вы запрашиваете в качестве вывода, это потянет егос этой конкретной страницы.Есть несколько частей, которых нет, поэтому я должен был учесть их, и если их там не было, просто ноль.Тем не менее, это должно помочь вам:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...