Извлечение данных из HTML Span с использованием Beautiful Soup - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу извлечь "1.02 Крора" и "7864" из HTML-кода и сохранить их в другом столбце в CSV-файле.

Код:

<div class="featuresvap _graybox clearfix"><h3><span><i class="icon-inr"></i>1.02 Crores</span><small> @ <i class="icon-inr"></i><b>7864/sq.ft</b> as per carpet area</small></h3>

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

объяснил в коде

from bs4 import BeautifulSoup

# data for first column
firstCol = []
# data for second column
secondCol = []

for url in listURL:
    html = '.....' # downloaded html
    soup = BeautifulSoup(html, 'html.parser')

    # 'select_one' select using CSS selectors, return only first element
    fCol = soup.select_one('.featuresvap h3 span')
    # remove: <i class="icon-inr"></i>
    span.find("i").extract()
    sCol = soup.select_one('.featuresvap h3 b')
    firstCol.append(fCol.text)
    secondCol.append(sCol.text.replace('/sq.ft', ''))

with open('results.csv', 'w') as fl:
    csvContent = ','.join(firstCol) + '\n' + ','.join(secondCol)
    fl.write(csvContent)

''' sample results
1.02 Crores | 2.34 Crores
7864        | 2475

'''
print('finish')
0 голосов
/ 08 ноября 2018

Не уверен насчет фактических данных, но это то, что я собрал очень быстро. Если вам это нужно для перехода на веб-сайт, используйте import requests. вам нужно добавить url = 'yourwebpagehere' page = requests.get(url) и изменить soup на soup = BeautifulSoup(page.text, 'lxml'), а затем удалить переменную html, так как это будет ненужным.

from bs4 import BeautifulSoup
import csv

html = '<div class="featuresvap _graybox clearfix"><h3><span><i class="icon-inr"></i>1.02 Crores</span><small> @ <i class="icon-inr"></i><b>7864/sq.ft</b> as per carpet area</small></h3>'
soup = BeautifulSoup(html, 'lxml')
findSpan = soup.find('span')
findB = soup.find('b')
print([findSpan.text, findB.text.replace('/sq.ft', '')])

with open('NAMEYOURFILE.csv', 'w+') as writer:
    csv_writer = csv.writer(writer)
    csv_writer.writerow(["First Column Name", "Second Column Name"])
    csv_writer.writerow([findSpan, findB])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...