簡體   English   中英

Python 錯誤:'NoneType' object 沒有使用 Beautiful Soup 的屬性 'find_all'

[英]Python Error: 'NoneType' object has no attribute 'find_all' using Beautiful Soup

我在嘗試運行一些網頁抓取代碼時遇到問題。 從一系列鏈接中抓取信息,如下所示:

http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2006.nsf/ec97fee42a2412d5052578bb001539ee/89045fe8ae896e2e0525751c005544cd?OpenDocument

我正在嘗試從表中抓取某些元素,但收到以下錯誤:

Python Error: 'NoneType' object has no attribute 'find_all'

我知道這與它實際上並沒有找到表有關,因為當我運行以下簡化代碼時:

from bs4 import BeautifulSoup
import requests
import pandas as pd
import csv
import time

url = 'http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2006.nsf/ec97fee42a2412d5052578bb001539ee/89045fe8ae896e2e0525751c005544cd?OpenDocument'

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


table = soup.find('table', {'bordercolor' : '#6583A0'})
print(table)

它為打印的表格返回“無”,這意味着代碼無法抓取表格的任何特征。 我一直在為類似的頁面運行類似的代碼,並且我能夠很好地找到表格,所以我不確定為什么這不起作用? 我是網絡抓取的新手,但我會很感激任何幫助!

所以湯沒有正確解析網站內容,因為一個標簽不正確,破壞了結構。 您必須在解析之前修復它:

url = 'http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2006.nsf/ec97fee42a2412d5052578bb001539ee/89045fe8ae896e2e0525751c005544cd?OpenDocument'

page = requests.get(url)
soup = BeautifulSoup(page.text.replace("</script\n", "</script>"), 'html.parser')

table = soup.find('table', {'bordercolor' : '#6583A0'})
print(table)

我認為 html 包含一些缺陷,導致 html 解析器無法正確解析您的soup ,您可以通過打印page.text來驗證您會發現某些部分已被打印

然而,lxml 解析器成功地解析了它的缺陷,因為lxml在格式錯誤的 html 文檔上效果更好:

rom bs4 import BeautifulSoup
import requests
import pandas as pd
import csv
import time

url = 'http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2006.nsf/ec97fee42a2412d5052578bb001539ee/89045fe8ae896e2e0525751c005544cd?OpenDocument'

page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')


table = soup.find('table', {'bordercolor' : '#6583A0'})
print(table)

應該正確捕獲表格標簽


import pandas as pd

df = pd.read_html(
    "http://www2.congreso.gob.pe/Sicr/TraDocEstProc/CLProLey2006.nsf/ec97fee42a2412d5052578bb001539ee/89045fe8ae896e2e0525751c005544cd?OpenDocument")[0]

print(df)
df.to_csv("Data.csv", index=False, header=None)

Output: 在線查看

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM