使用Python标签中的BeautifulSoup进行网络抓取

时间:2020-04-03 21:17:22

标签: python web-scraping beautifulsoup

我目前正在尝试从以下链接中抓取一些信息:

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

我想使用Python中的BeautifulSoup刮擦表中的某些信息。理想情况下,我想从表格中分别刮掉“ 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和webscraping的新手,但是是否有办法将这些项目拉出并单独存储(即:仅将标题存储在对象中,对象中的摘要等)。我很难确定要在网页代码中使用的唯一标签。还是在刮擦后我应该清洁和解析的东西?

1 个答案:

答案 0 :(得分:1)

要获得作者,您可以使用:

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. '