#python-3.x #web-scraping #nlp
#python-3.x #очистка веб-страниц #nlp
Вопрос:
я пытаюсь собрать некоторые данные для обучения, но я застрял.
Я хотел бы очистить дату, а не только год, но я не мог понять, как это сделать на данный момент.
Вот сегмент, который я хотел бы очистить :
И вот мой сценарий до сих пор :
import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
import re
url = "https://www.senscritique.com/films/tops/top111"
results = requests.get(url)
soup = BeautifulSoup(results.text, "html.parser")
titles = []
years = []
notes = []
synopsys = []
infos = []
dates = []
movie_div = soup.find_all('div', class_ = 'elto-flexible-column')
for container in movie_div:
title = container.h2.a.text
titles.append(title)
year = container.h2.find('span', class_ = 'elco-date').text
year = year.replace('(', '')
year = year.replace(')', '')
years.append(year)
sy = container.find('p', class_ = 'elco-description').text
synopsys.append(sy)
note = float(container.div.a.text)
notes.append(note)
info = container.find('p', class_ = 'elco-baseline elco-options').text
#type = re.sub(r'[a-z] ', '', type)
infos.append(info)
soup = container.find('p', class_ = 'elco-baseline elco-options')
for i in soup:
i = soup.find('time')
dates.append(i)
print(dates[0])
И вот результаты :
Я бы хотел просто иметь «1957-04-10» или «10 аврил 1957», что угодно! Но я не могу понять это! Я перепробовал много вещей, но это лучшее, что у меня было до сих пор.
Спасибо 🙂
Ответ №1:
Вы можете использовать .text
свойство <time>
тега, чтобы получить время:
import requests
from bs4 import BeautifulSoup
url = 'https://www.senscritique.com/films/tops/top111'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
for movie in soup.select('.elto-item'):
title = movie.select_one('[id^="product-title"]').text
time = movie.select_one('time')
time = time.text if time else '-'
print('{:<40} {}'.format(title, time))
С принтами:
12 hommes en colère 10 avril 1957
Harakiri 16 septembre 1962
Barberousse 3 avril 1965
Le Bon, la Brute et le Truand 23 décembre 1966
Les Sept Samouraïs 26 avril 1954
Il était une fois dans l'Ouest 21 décembre 1968
Il était une fois en Amérique 23 mai 1984
Le Parrain 24 mars 1972
Le Trou 18 mars 1960
Dersou Ouzala 2 août 1975
Point limite 7 octobre 1964
Entre le ciel et l'enfer 1 mars 1963
...and so on.
Комментарии:
1. Оооу, я использовал текст, но это не сработало. Наверное, я делал что-то не так. Спасибо за ответ, я попробую, как и вы 🙂
2. Спасибо, это работает! Я не знал select_one . Это приятно. Хорошего дня.
Ответ №2:
Я думаю, что что-то подобное сделало бы это за вас, просто вернув дату.
tags = soup('time')
date_formatted = list()
for tag in tags:
date_formatted.append((tag.contents[0])))
print(date_formatted[0])