Я пытаюсь создать веб-сайт.Проблема в том, что оба имеют одинаковый класс и теги. Как разделить с помощью Beautifulsoup? - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь отсканировать веб-страницы http://www.intermediary.natwest.com/intermediary-solutions/lending-criteria.html, разделение на две части: заголовок и содержимое, проблема в том, что оба имеют одинаковый класс и теги.Кроме использования регулярных выражений и жесткого кодирования, Как разделить и извлечь на 2 части?

введите описание изображения здесь

На картинке или в ссылке на веб-сайте, выделенные жирным шрифтомпредставляет Заголовок, а пояснение (не выделено жирным шрифтом чуть ниже жирного) представляет содержимое.

Вывод выглядит примерно так (без пробелов)

Файл вывода Xlsx выглядит следующим образом

1 Ответ

0 голосов
/ 18 апреля 2019

Конвертируйте каждый «раздел» в строку, а затем разделяйте на теги <strong>, разбивая их на заголовки и содержимое:

import requests
from bs4 import BeautifulSoup
import pandas as pd


url = 'http://www.intermediary.natwest.com/intermediary-solutions/lending-criteria.html'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

sections = soup.find_all('div',{'class':'accordion-section-content'})

results = {}
for section in sections:
    splits = section.prettify().split('<strong>')
    for each in splits:
        try:
            headline, content = each.split('</strong>')[0].strip(), each.split('</strong>')[1]
            headline = BeautifulSoup(headline, 'html.parser').text.strip()
            content = BeautifulSoup(content, 'html.parser').text.strip()

            content_split = content.split('\n')
            content = ' '.join([ text.strip() for text in content_split if text != ''])

            results[headline] = content
        except:
            continue

df = pd.DataFrame(results.items(), columns = ['Headings','Content'])
df.to_csv('C:/test.csv', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...