Webscraping с BeautifulSoup в Python теги - PullRequest
1 голос
/ 04 апреля 2020

В настоящее время я пытаюсь получить некоторую информацию по следующей ссылке:

http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2001.nsf/ee3e4953228bd84705256dcd008385e7/4ec9c3be3fc593e2052571c40071de75?OpenDocument

Я хотел бы получить некоторую информацию из таблицы, используя BeautifulSoup в Python. В идеале я хотел бы вычеркнуть «Groupo Parliamentario», «Titulo», «Sumilla» и «Autores» из таблицы как отдельные элементы.

До сих пор я разработал следующий код с использованием BeautifulSoup:

from bs4 import BeautifulSoup
import requests
import pandas as pd

url = 'http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2001.nsf/ee3e4953228bd84705256dcd008385e7/4ec9c3be3fc593e2052571c40071de75?OpenDocument'

page = requests.get(url)

soup = BeautifulSoup(page.text, 'html.parser')

table = soup.find('table', {'bordercolor' : '#6583A0'})
contents = []
summary = []
authors = []
contents.append(table.findAll('font'))
authors.append(table.findAll('a'))

С чем я борюсь, так это с тем, что код, который очищает авторов, только очищает первого автора в списке. В идеале мне нужно почистить всех авторов в списке. Мне это кажется странным, потому что, глядя на код html для веб-страницы, все авторы в списке отмечены тегами '<a href = >'. Я бы подумал, что table.findAll('a')) тогда соберет всех авторов в списке.

Наконец-то, я просто выбрасываю все остальное из очень грязного html (название, резюме, парламентская группа) всех в одну длинную строку под contents. Я не уверен, что что-то упустил, я в некотором роде новичок в html и веб-копировании, но есть ли способ извлечь эти элементы и сохранить их индивидуально (ie: сохранение только заголовка в объект, просто сводка по объекту и т. д. c). Мне трудно определить уникальные теги, чтобы сделать это в коде веб-страницы. Или это то, что я должен просто почистить и разобрать после очистки?

1 Ответ

1 голос
/ 04 апреля 2020

чтобы получить авторов, вы можете использовать:

soup.find('input', {'name': 'NomCongre'})['value']

вывод:

'Santa María Calderón  Luis,Alva Castro  Luis,Armas Vela  Carlos,Cabanillas Bustamante  Mercedes,Carrasco Távara  José,De la Mata Fernández  Judith,De La Puente Haya  Elvira,Del Castillo Gálvez  Jorge,Delgado Nuñez Del Arco  José,Gasco Bravo  Luis,Gonzales Posada  Eyzaguirre  Luis,León Flores  Rosa Marina,Noriega Toledo  Víctor,Pastor Valdivieso  Aurelio,Peralta Cruz  Jonhy,Zumaeta Flores  César'

для очистки Grupo Parlamentario

table.find_all('td', {'width': 446})[1].text

вывод:

'Célula Parlamentaria Aprista'

для чистки Título:

table.find_all('td', {'width': 446})[2].text

вывод:

'IGV/SELECTIVO:D.L.821/LEY INTERPRETATIVA '

для чистки Sumilla:

table.find_all('td', {'width': 446})[3].text

вывод:

'  Propone la aprobación de una Ley Interpretativa del Texto Original del Numeral 1 del Apéndice II del Decreto Legislativo N°821,modificatorio del Texto Vigente del Numeral 1 del Apéndice II del Texto Único Ordenado de la Ley del Impuesto General a las Ventas y Selectivo al Consumo,aprobado por Decreto Supremo N°054-99-EF. '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...