![](/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.