使用BeautifulSoup进行网页抓取

时间:2020-10-21 14:32:20

标签: python-3.x web-scraping nlp

我正在尝试抓取一些数据进行培训,但是我被困住了。

我想抓取日期,而不仅是年份,但我现在还不知道该怎么做。

这是我要剪贴的部分:

htmlscrape

这是我到目前为止的脚本:

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])

结果如下:

result

我只想拥有“ 1957-04-10”或“ 10 avril 1957”,无论如何!但是我无法弄清楚!我尝试了很多事情,但这是我迄今为止最好的。

谢谢:)

2 个答案:

答案 0 :(得分: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 :(得分:1)

我认为类似的事情会为您完成,只是返回日期。

tags = soup('time')
date_formatted = list()
for tag in tags:
    date_formatted.append((tag.contents[0])))
    print(date_formatted[0])