![](/img/trans.png)
[英]Beautiful Soup error: 'NoneType' object has no attribute 'find_all'
[英]Python Error: 'NoneType' object has no attribute 'find_all' using Beautiful Soup
我在嘗試運行一些網頁抓取代碼時遇到問題。 從一系列鏈接中抓取信息,如下所示:
我正在嘗試從表中抓取某些元素,但收到以下錯誤:
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.