Как удалить эту страницу из Интернета и превратить ее в файл csv?

Меня зовут Жоао, я студент юридического факультета из Бразилии, и я новичок в этом. Я пытаюсь очистить эту страницу в Интернете в течение недели, чтобы помочь мне с диссертацией бакалавриата и другим исследователям.

Хочу сделать csv файл со всеми результатами исследования в суде (эта ссылка). Как вы можете видеть по ссылке, 404 результата (processo) делятся на 41 страницу. Каждый результат имеет свой собственный html со своей информацией (например, на торговой площадке).

Полученный html разделен на две основные таблицы. Первый содержит общую информацию о результате и, вероятно, будет иметь одинаковую структуру во всех результатах. Вторая таблица содержит файлы результатов (это решения в административном процессе), которые могут различаться по количеству файлов и даже иметь несколько файлов с одинаковыми именами, но разными датами. Из этой второй таблицы мне просто нужна ссылка на самое старое "relatório/voto" и его дата, а также ссылка на самое старое "acórdão" и его дата.

Заголовок CSV-файла должен выглядеть, как на следующем изображении, и каждый результат должен быть строкой.

Я работаю с python в google colab, и я пробовал много способов очистки, но это не сработало. Мой наиболее полный подход был, когда я пытался адаптировать учебник по очистке продукта: видео и соответствующий код в Github.

Моя адаптация не работает в colab, не выдает ни сообщения об ошибке, ни файла csv. В следующем коде я выявил некоторые проблемы в адаптации путем сравнения страниц и урока, вот они:

  1. Извлекая результат html из одной из 41 страницы, я считаю, что должен создать список извлеченных результатов html, но он также извлек текст, и я не уверен, как его исправить.

  2. При попытке извлечь данные из результирующего html у меня ничего не получается. Всякий раз, когда я пытался создать список с ними, он возвращал мне только один результат.

  3. Помимо учебника, я также хотел бы извлечь данные из второй таблицы в результатах html, это будет ссылка на самую старую «relatório/voto» и ее дату, а также ссылку на самую старую «acórdão» и ее дату. Я не уверен, как и когда в коде я должен это сделать.

АДАПТИРОВАННЫЙ КОД

from requests_html import HTMLSession
import csv

s = HTMLSession()

# STEP 01: take the result html

def get_results_links(page):
  url = f"https://www.tce.sp.gov.br/jurisprudencia/pesquisar?txtTdPalvs=munic%C3%ADpio+pessoal+37&txtExp=temporari&txtQqUma=admiss%C3%A3o+contrata%C3%A7%C3%A3o&txtNenhPalvs=&txtNumIni=&txtNumFim=&tipoBuscaTxt=Documento&_tipoBuscaTxt=on&quantTrechos=1&processo=&exercicio=&dataAutuacaoInicio=&dataAutuacaoFim=&dataPubInicio=01%2F01%2F2021&dataPubFim=31%2F12%2F2021&_relator=1&_auditor=1&_materia=1&tipoDocumento=2&_tipoDocumento=1&acao=Executa&offset = {page}"
  links = []
  r = s.get(url)
  results = r.html.find('td.small a')
  for item in results:
    links.append(item.find('a', first=True).attrs['href']) #Problem 01: I believe it should creat a list of the results html extracted out the page, but it extracted the text too.
  return links

# STEP 02: extracting relevant information from the result html before extracted

def parse_result(url):
    r = s.get(url)
    numero = r.html.find('td.small', first=True).text.strip()
    data_autuacao = r.html.find('td.small', first=True).text.strip()
    try:
      parte_1 = r.html.find('td.small', first=True).text.strip()
    except AttributeError as err:
      sku = 'Não há'
    try:
      parte_2 = r.html.find('td.small', first=True).text.strip()
    except AttributeError as err:
      parte_2 = 'Não há'
    materia = r.html.find('td.small', first=True).text.strip()
    exercicio = r.html.find('td.small', first=True).text.strip()
    objeto = r.html.find('td.small', first=True).text.strip()
    relator = r.html.find('td.small', first=True).text.strip()
    #Problem 02
# STEP 03: creating a list based objetcs created before
    product = {
        'Nº do Processo': numero,
        "Link do Processo" : r,
        'Data de Autuação': data_autuacao,
        'Parte 1': parte_1,
        'Parte 2': parte_2,
        'Exercício': exercicio,
        'Matéria' : materia,
        'Objeto' : objeto,
        'Relator' : relator
        #'Relatório/Voto' :
        #'Data Relatório/Voto' :
        #'Acórdão' :
        #'Data Acórdão' :
    }#Problem 03
    return product

# STEP 04: saving as csv
def save_csv(final):
    keys = final [0].keys()

    with open('products.csv', 'w') as f:
        dict_writer = csv.DictWriter(f, keys)
        dict_writer.writeheader()
        dict_writer.writerows(final)

# STEP 05: main - joinning the functions
def main():
    final = []
    for x in range(0, 410, 10):
        print('Getting Page ', x)
        urls = get_results_links(x)
        for url in urls:
            final.append(parse_result(url))
        print('Total: ', len(final))
        save_csv(final)

Спасибо, @shelter, за вашу помощь. Я попытался указать это.

НЕ размещайте изображения кода, данных, сообщений об ошибках и т. д. - скопируйте или введите текст в вопрос. Как спросить

Rob 20.11.2022 03:47

Извините за недружественные ответы на ваше сообщение. Вы, вероятно, полагались на функцию, подобную проверке орфографии, и, поскольку (я предполагаю) не является носителем английского языка, разница между ломом и очисткой неясна. МЫ знаем, что вы имеете в виду, не волнуйтесь! НО, пожалуйста, осознайте, насколько расплывчат ваш вопрос. По сути, вы говорите: «Это не работает», и мы даже не знаем, какой код вы пробовали, или где находится учебник по продуктам в магазине. Научитесь использовать инструмент {} из меню «Правка» для выделенного мышью текста, чтобы отформатировать его как код/данные/сообщения об ошибках. Вы можете перечислить нужные поля в CSV....

shellter 20.11.2022 03:55

И не нужно утруждать себя созданием картины того, как вы хотите, чтобы конечный результат выглядел. Просто используйте инструмент {}, чтобы составить красивый список, который будет выделяться из основной части вашего вопроса. Кроме того, пожалуйста, осознайте, что идея StackOverflow состоит в том, чтобы помочь людям понять ошибки в их кодировании, а не писать/решать код/проблему в качестве услуги. Ожидается, что вы продемонстрируете свою лучшую попытку решить свою проблему, а затем читатели могут помочь вам улучшить свои навыки кодирования. Я вернусь, чтобы увидеть, если я могу помочь завтра когда-нибудь. Удачи.

shellter 20.11.2022 03:59

Этот вопрос/ответ может быть чем-то полезен, и это довольно хороший пример вопроса, который получает помощь: stackoverflow.com/questions/74423654/…. Удачи.

shellter 20.11.2022 04:18

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

João Pedro Rodrigues Oliveira 20.11.2022 07:27
Мутабельность и переработка объектов в Python
Мутабельность и переработка объектов в Python
Объекты являются основной конструкцией любого языка ООП, и каждый язык определяет свой собственный синтаксис для их создания, обновления и...
Другой маршрут в Flask Python
Другой маршрут в Flask Python
Flask - это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую...
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
Проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
0
5
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть лучшие (хотя и более сложные) способы получения этой информации, например, scrapy или асинхронное решение. Тем не менее, вот один из способов получить нужную информацию, а также сохранить ее в файл csv. Я очистил только первые 2 страницы (20 результатов), вы можете увеличить диапазон, если хотите:

from bs4 import BeautifulSoup as bs
import requests
from tqdm.notebook import tqdm
import pandas as pd

pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)

headers = {
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}

s = requests.Session()
s.headers.update(headers)

big_list = []
detailed_list = []
for x in tqdm(range(0, 20, 10)):
    url = f'https://www.tce.sp.gov.br/jurisprudencia/pesquisar?txtTdPalvs=munic%C3%ADpio+pessoal+37&txtExp=temporari&txtQqUma=admiss%C3%A3o+contrata%C3%A7%C3%A3o&txtNenhPalvs=&txtNumIni=&txtNumFim=&tipoBuscaTxt=Documento&_tipoBuscaTxt=on&quantTrechos=1&processo=&exercicio=&dataAutuacaoInicio=&dataAutuacaoFim=&dataPubInicio=01%2F01%2F2021&dataPubFim=31%2F12%2F2021&_relator=1&_auditor=1&_materia=1&tipoDocumento=2&_tipoDocumento=1&acao=Executa&offset = {x}'
    r = s.get(url)
    urls = bs(r.text, 'html.parser').select('tr[class = "borda-superior"] td:nth-of-type(2) a')
    big_list.extend(['https://www.tce.sp.gov.br/jurisprudencia/' + x.get('href') for x in urls])
for x in tqdm(big_list):
    r = s.get(x)
    soup = bs(r.text, 'html.parser')
    n_proceso = soup.select_one('td:-soup-contains("N° Processo:")').find_next('td').text if soup.select('td:-soup-contains("N° Processo:")') else None
    link_proceso = x
    autoacao = soup.select_one('td:-soup-contains("Autuação:")').find_next('td').text if soup.select('td:-soup-contains("Autuação:")') else None
    parte_1 = soup.select_one('td:-soup-contains("Parte 1:")').find_next('td').text if soup.select('td:-soup-contains("Parte 1:")') else None
    parte_2 = soup.select_one('td:-soup-contains("Parte 2:")').find_next('td').text if soup.select('td:-soup-contains("Parte 2:")') else None
    materia = soup.select_one('td:-soup-contains("Matéria:")').find_next('td').text if soup.select('td:-soup-contains("Matéria:")') else None
    exercicio = soup.select_one('td:-soup-contains("Exercício:")').find_next('td').text if soup.select('td:-soup-contains("Exercício:")') else None
    objeto = soup.select_one('td:-soup-contains("Objeto:")').find_next('td').text if soup.select('td:-soup-contains("Objeto:")') else None
    relator = soup.select_one('td:-soup-contains("Relator:")').find_next('td').text if soup.select('td:-soup-contains("Relator:")') else None
    relatorio_voto = soup.select_one('td:-soup-contains("Relatório / Voto ")').find_previous('a').get('href') if soup.select('td:-soup-contains("Relatório / Voto")') else None
    data_relatorio = soup.select_one('td:-soup-contains("Relatório / Voto ")').find_previous('td').text if soup.select('td:-soup-contains("Relatório / Voto")') else None
    acordao = soup.select_one('td:-soup-contains("Acórdão ")').find_previous('a').get('href') if soup.select('td:-soup-contains("Acórdão ")') else None
    data_acordao = soup.select_one('td:-soup-contains("Acórdão ")').find_previous('td').text if soup.select('td:-soup-contains("Acórdão ")') else None
    detailed_list.append((n_proceso, link_proceso, autoacao, parte_1, parte_2, 
                          materia, exercicio, objeto, relator, relatorio_voto, 
                          data_relatorio, acordao, data_acordao))
detailed_df = pd.DataFrame(detailed_list, columns = ['n_proceso', 'link_proceso', 'autoacao', 'parte_1', 
                                                     'parte_2', 'materia', 'exercicio', 'objeto', 'relator', 
                                                     'relatorio_voto', 'data_relatorio', 'acordao', 'data_acordao'])
display(detailed_df) 
detailed_df.to_csv('legal_br_stuffs.csv')

Результат в терминале:

100%
2/2 [00:04<00:00, 1.78s/it]
100%
20/20 [00:07<00:00, 2.56it/s]
n_proceso   link_proceso    autoacao    parte_1 parte_2 materia exercicio   objeto  relator relatorio_voto  data_relatorio  acordao data_acordao
0   18955/989/20    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=18955/989/20&offset=0  31/07/2020  ELVES SCIARRETTA CARREIRA   PREFEITURA MUNICIPAL DE BRODOWSKI   RECURSO ORDINARIO   2020    Recurso Ordinário Protocolado em anexo. EDGARD CAMARGO RODRIGUES    https://www2.tce.sp.gov.br/arqs_juri/pdf/801385.pdf 20/01/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/801414.pdf 20/01/2021
1   13614/989/18    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=13614/989/18&offset=0  11/06/2018  PREFEITURA MUNICIPAL DE SERRA NEGRA     RECURSO ORDINARIO   2014    Recurso Ordinário   ANTONIO ROQUE CITADINI  https://www2.tce.sp.gov.br/arqs_juri/pdf/797986.pdf 05/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/800941.pdf 05/02/2021
2   6269/989/19 https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=6269/989/19&offset=0   19/02/2019  PREFEITURA MUNICIPAL DE TREMEMBE        ADMISSAO DE PESSOAL - CONCURSO PROCESSO SELETIVO    2018    INTERESSADO: Rafael Varejão Munhos e outros. EDITAL Nº: 01/2017. CONCURSO PÚBLICO: 01/2017. None    https://www2.tce.sp.gov.br/arqs_juri/pdf/804240.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804258.pdf 06/02/2021
3   14011/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=14011/989/19&offset=0  11/06/2019  RUBENS EDUARDO DE SOUZA AROUCA  PREFEITURA MUNICIPAL DE TREMEMBE    RECURSO ORDINARIO   2019    Recurso Ordinário   RENATO MARTINS COSTA    https://www2.tce.sp.gov.br/arqs_juri/pdf/804240.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804258.pdf 06/02/2021
4   14082/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=14082/989/19&offset=0  12/06/2019  PREFEITURA MUNICIPAL DE TREMEMBE        RECURSO ORDINARIO   2019    Recurso Ordinário nos autos do TC n° 6269.989.19 - Admissão de pessoal - Concurso Público   RENATO MARTINS COSTA    https://www2.tce.sp.gov.br/arqs_juri/pdf/804240.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804258.pdf 06/02/2021
5   14238/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=14238/989/19&offset=0  13/06/2019  MARCELO VAQUELI PREFEITURA MUNICIPAL DE TREMEMBE    RECURSO ORDINARIO   2019    Recurso Ordinário   RENATO MARTINS COSTA    https://www2.tce.sp.gov.br/arqs_juri/pdf/804240.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804258.pdf 06/02/2021
6   14141/989/20    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=14141/989/20&offset=0  28/05/2020  PREFEITURA MUNICIPAL DE BIRIGUI CRISTIANO SALMEIRAO RECURSO ORDINARIO   2018    Recurso Ordinário   RENATO MARTINS COSTA    https://www2.tce.sp.gov.br/arqs_juri/pdf/804259.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804262.pdf 06/02/2021
7   15371/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=15371/989/19&offset=0  02/07/2019  PREFEITURA MUNICIPAL DE BIRIGUI     ADMISSAO DE PESSOAL - TEMPO DETERMINADO 2018    INTERESSADOS: ADRIANA PEREIRA CRISTAL E OUTROS. PROCESSOS SELETIVOS/EDITAIS Nºs:002/2016, 004/2017, 05/2017, 06/2017,001/2018 e 002/2018. LEIS AUTORIZADORAS: Nº 5134/2009 e Nº 3946/2001.  None    https://www2.tce.sp.gov.br/arqs_juri/pdf/804259.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804262.pdf 06/02/2021
8   15388/989/20    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=15388/989/20&offset=0  04/06/2020  MARIA ANGELICA MIRANDA FERNANDES        RECURSO ORDINARIO   2018    Recurso Ordinário   RENATO MARTINS COSTA    https://www2.tce.sp.gov.br/arqs_juri/pdf/804259.pdf 06/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804262.pdf 06/02/2021
9   12911/989/16    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=12911/989/16&offset=0  20/07/2016  MARCELO CANDIDO DE SOUZA    PREFEITURA MUNICIPAL DE SUZANO  RECURSO ORDINARIO   2016    Recurso Ordinário Ref. Atos de Admissão de Pessoal - Exercício 2012. objetivando o preenchimento temporário dos cargos de Médico Cardiologista 20h, Fotógrafo, Médico Clínico Geral 20lt, Médico Gineco DIMAS RAMALHO   https://www2.tce.sp.gov.br/arqs_juri/pdf/814599.pdf 27/04/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/814741.pdf 27/04/2021
10  1735/002/11 https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=1735/002/11&offset=10  22/11/2011  FUNDACAO DE APOIO AOS HOSP VETERINARIOS DA UNESP        ADMISSAO DE PESSOAL - TEMPO DETERMINADO 2010    ADMISSAO DE PESSOAL POR TEMPO DETERMINADO COM CONCURSO/PROCESSO SELETIVO    ANTONIO ROQUE CITADINI  https://www2.tce.sp.gov.br/arqs_juri/pdf/800893.pdf 21/01/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/800969.pdf 21/01/2021
11  23494/989/18    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=23494/989/18&offset=10 20/11/2018  HAMILTON LUIS FOZ       RECURSO ORDINARIO   2018    Recurso Ordinário   DIMAS RAMALHO   https://www2.tce.sp.gov.br/arqs_juri/pdf/816918.pdf 13/05/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/817317.pdf 13/05/2021
12  24496/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=24496/989/19&offset=10 25/11/2019  PREFEITURA MUNICIPAL DE LORENA      RECURSO ORDINARIO   2017    Recurso Ordinário em face de sentença proferida nos autos de TC 00006265.989.19-4   DIMAS RAMALHO   https://www2.tce.sp.gov.br/arqs_juri/pdf/814660.pdf 27/04/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/814805.pdf 27/04/2021
13  17110/989/18    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=17110/989/18&offset=10 03/08/2018  JORGE ABISSAMRA PREFEITURA MUNICIPAL DE FERRAZ DE VASCONCELOS   RECURSO ORDINARIO   2018    Recurso Ordinário   DIMAS RAMALHO   https://www2.tce.sp.gov.br/arqs_juri/pdf/814633.pdf 27/04/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/814774.pdf 27/04/2021
14  24043/989/19    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=24043/989/19&offset=10 18/11/2019  PREFEITURA MUNICIPAL DE IRAPURU     RECURSO ORDINARIO   2018    Recurso ordinário   ROBSON MARINHO  https://www2.tce.sp.gov.br/arqs_juri/pdf/817014.pdf 12/05/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/817269.pdf 12/05/2021
15  2515/989/20 https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=2515/989/20&offset=10  03/02/2020  PREFEITURA MUNICIPAL DE IPORANGA        RECURSO ORDINARIO   2020    Recurso interposto em face da sentença proferida nos autos do TC 15791/989/19-7.    ROBSON MARINHO  https://www2.tce.sp.gov.br/arqs_juri/pdf/817001.pdf 12/05/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/817267.pdf 12/05/2021
16  1891/989/20 https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=1891/989/20&offset=10  24/01/2020  PREFEITURA MUNICIPAL DE IPORANGA        RECURSO ORDINARIO   2020    RECURSO ORDINÁRIO   DIMAS RAMALHO   https://www2.tce.sp.gov.br/arqs_juri/pdf/802484.pdf 03/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/802620.pdf 03/02/2021
17  15026/989/20    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=15026/989/20&offset=10 02/06/2020  DIXON RONAN CARVALHO    PREFEITURA MUNICIPAL DE PAULINIA    RECURSO ORDINARIO   2018    RECURSO ORDINÁRIO   ANTONIO ROQUE CITADINI  https://www2.tce.sp.gov.br/arqs_juri/pdf/802648.pdf 05/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/803361.pdf 05/02/2021
18  9070/989/20 https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=9070/989/20&offset=10  09/03/2020  PREFEITURA MUNICIPAL DE FLORIDA PAULISTA        RECURSO ORDINARIO   2017    Recurso Ordinário   ROBSON MARINHO  https://www2.tce.sp.gov.br/arqs_juri/pdf/817006.pdf 12/05/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/817296.pdf 12/05/2021
19  21543/989/20    https://www.tce.sp.gov.br/jurisprudencia/exibir?proc=21543/989/20&offset=10 11/09/2020  PREFEITURA MUNICIPAL DE JERIQUARA       RECURSO ORDINARIO   2020    RECURSO ORDINÁRIO   SIDNEY ESTANISLAU BERALDO   https://www2.tce.sp.gov.br/arqs_juri/pdf/802997.pdf 13/02/2021  https://www2.tce.sp.gov.br/arqs_juri/pdf/804511.pdf 13/02/2021

Если вам понадобится кодирование в вашей карьере, я настоятельно рекомендую вам сначала начать накапливать базовые знания, а затем пытаться кодировать или адаптировать другой код.

Спасибо, Барри! хотя мне это не нужно в моей карьере, я действительно верю, что кодирование может помочь мне и другим исследователям/юристам, поэтому я энтузиаст. Я попробовал код в colab, но получил эту ошибку в строке 26: «NotImplementedError: реализованы только следующие псевдоклассы: nth-of-type». Вы знаете, что это значит?

João Pedro Rodrigues Oliveira 20.11.2022 15:22

@JoãoPedroRodriguesOliveira эта ошибка означает, что вам нужно обновить BeautifulSoup - сделайте pip install -U bs4 soupsieve, перезапустите ядро ​​и повторите попытку.

Barry the Platipus 20.11.2022 15:24

Хорошее шоу, Барри! @JoãoPedroRodriguesOliveira: если у вас это получится, не забудьте «принять» ответ, который вам подходит. Это дает ценные «очки репутации» вашему помощнику и дает им стимул продолжать помогать другим людям решать другие проблемы. Когда у вас есть 20? очки репутации сами, вы можете начать голосовать за ответы (также), которые добавляют знания, необходимые для решения проблемы. (хм, не очень удачная формулировка, но я должен уйти через несколько минут (-;! ). Всем удачи.

shellter 20.11.2022 20:11

Я сделаю это, Шелтер! Барри, я вставил код и обновил ядро, но все равно не работает. Как вы думаете, это ошибка Google Colab? У меня также случилось со мной в другой день, но я смог преодолеть это, обновив модуль. Есть ли другое место для кодирования в Интернете, которое могло бы быть лучше, чем colab?

João Pedro Rodrigues Oliveira 20.11.2022 22:47

Код @JoãoPedroRodriguesOliveira работает (я проверяю свои ответы, прежде чем публиковать их). Я не уверен, в чем ваши проблемы, но убедитесь, что вы правильно обновили пакеты (затем используйте обновленное ядро), или, в качестве альтернативы, вы можете запустить код локально на своем компьютере.

Barry the Platipus 21.11.2022 08:18

@JoãoPedroRodriguesOliveira: Поспрашивайте своих местных друзей/членов семьи, чтобы найти кого-то, у кого больше опыта. Много раз «вторая пара глаз» сразу увидит проблему. (Я ничего не знаю о colab, извините!). Удачи!

shellter 24.11.2022 18:25

Другие вопросы по теме