Печать результатов без элементов html - PullRequest
0 голосов
/ 04 марта 2020

Используя Beautifulsoup4, я разбираю новостной сайт. Но я не могу справиться, чтобы избавиться от элементов html, чтобы получить чистый текст.

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

Я интересно, какой формат будет полезен для хранения данных? Я буду использовать его в ML для обучения модели.

import requests
from bs4 import BeautifulSoup as bs

URL = 'http://marja.az/search?q='

# if there is a prabel inside of keyword merge with + sign
KEYWORDS = ['Valizada',
            ]

for key in KEYWORDS:
    search_url = URL + key
    print(search_url)
    r = requests.get(search_url)
    soup = bs(r.content, "lxml")
    for data in soup.find_all("div", {"class": "searchNews"}):
        for a in data.find_all("a"):
            href = a.get("href")
            # print(href)
            link = "http://marja.az/" + href
            print(link)
            r1 = requests.get(link)
            soup1 = bs(r1.content, "lxml")
            header = soup1.findAll("h1", attrs={"class": "title"})
            print(header)
            paragraph = soup1.findAll("div", attrs={"class": "text"})
            for p in paragraph:
                print(p.findAll('p', text=True, recursive=False))
            date = soup1.findAll("div", attrs={"class": "left"})
            for d in date:
                print(soup1.find('div', {'style': 'color: #af0000; margin:10px 0px 10px 0px; font-size:12px; '
                                                  'font-weight:bold; text-align:left;'}))

Желаемый результат:

Date, Header, Content

1 Ответ

0 голосов
/ 04 марта 2020

попробуйте

soup1 = bs(r1.content, "lxml")
# header
header = soup1.find("h1", attrs={"class": "title"}).text
print(header)

# content
content = []
paragraph = soup1.find("div", attrs={"class": "text"}).findAll('p', text=True, recursive=False)
for p in paragraph:
    content.append(p.text)
    content_text = "".join(content)
    print(content_text)

# date
date = soup1.find('div', {'style': 'color: #af0000; margin:10px 0px 10px 0px; font-size:12px; ''font-weight:bold; text-align:left;'}).text

date = date.split(",")[0].split(" ")
date = date[0] + "." + date[1] + "." + date[2]
print(date)
...