Как извлечь данные из HTML, используя красивый суп - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь очистить веб-страницу и сохранить результаты в файле csv / excel.Я использую красивый суп для этого.

Я пытаюсь извлечь данные из супа, используя функцию find_all, но я не уверен, как захватить данные в имени или названии поля

HTML-файл имеет следующий формат

<h3 class="font20">
 <span itemprop="position">36.</span> 
 <a class="font20 c_name_head weight700 detail_page" 
 href="/companies/view/1033/nimblechapps-pvt-ltd" target="_blank" 
 title="Nimblechapps Pvt. Ltd."> 
     <span itemprop="name">Nimblechapps Pvt. Ltd. </span>
</a> </h3>

Пока это мой код.Не уверен, как действовать дальше

from bs4 import BeautifulSoup as BS
import requests 
page = 'https://www.goodfirms.co/directory/platform/app-development/iphone? 
page=2'
res = requests.get(page)
cont = BS(res.content, "html.parser")
names = cont.find_all(class_ = 'font20 c_name_head weight700 detail_page')
names = cont.find_all('a' , attrs = {'class':'font20 c_name_head weight700 
detail_page'})

Я попытался использовать следующее -

Input: cont.h3.a.span
Output: <span itemprop="name">Nimblechapps Pvt. Ltd.</span>

Я хочу извлечь название компании - "Nimblechapps Pvt. Ltd."

Ответы [ 3 ]

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

То же самое, но с использованием комбинатора-потомка " " для объединения селектора типа a с селектором атрибута = значения [itemprop="name"]

names = [item.text for item in cont.select('a [itemprop="name"]')]
0 голосов
/ 25 декабря 2018

Старайтесь не использовать составные классы в скрипте, так как они склонны к поломке.Следующий скрипт также должен извлечь вам необходимый контент.

import requests
from bs4 import BeautifulSoup

link = "https://www.goodfirms.co/directory/platform/app-development/iphone?page=2"

res = requests.get(link)
soup = BeautifulSoup(res.text, 'html.parser')
for items in soup.find_all(class_="commoncompanydetail"):
    names = items.find(class_='detail_page').text
    print(names)
0 голосов
/ 25 декабря 2018

Вы можете использовать для этого список:

from bs4 import BeautifulSoup as BS
import requests

page = 'https://www.goodfirms.co/directory/platform/app-development/iphone?page=2'
res = requests.get(page)
cont = BS(res.content, "html.parser")
names = cont.find_all('a' , attrs = {'class':'font20 c_name_head weight700 detail_page'})
print([n.text for n in names])

Вы получите:

['Nimblechapps Pvt. Ltd.', (..) , 'InnoApps Technologies Pvt. Ltd', 'Umbrella IT', 'iQlance Solutions', 'getyoteam', 'JetRuby Agency LTD.', 'ONLINICO', 'Dedicated Developers', 'Appingine', 'webnexs']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...