Python 使用BeautifulSoup进行网站抓取:TypeError:“非类型”对象不可调用
我是个十足的初学者。我试着使用BeautifulSoup和刮一个网站。我确实得到了HTML,但我现在想得到所有包含class content\u类的div 以下是我的尝试:Python 使用BeautifulSoup进行网站抓取:TypeError:“非类型”对象不可调用,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我是个十足的初学者。我试着使用BeautifulSoup和刮一个网站。我确实得到了HTML,但我现在想得到所有包含class content\u类的div 以下是我的尝试: import requests from BeautifulSoup import BeautifulSoup #Request the page and parse the HTML url = 'mywebsite' response = requests.get(url) html = response.conten
import requests
from BeautifulSoup import BeautifulSoup
#Request the page and parse the HTML
url = 'mywebsite'
response = requests.get(url)
html = response.content
#Beautiful Soup
soup = BeautifulSoup(html)
soup.find_all('div', class_="content_class")
然而,这不起作用。
我得到:
回溯最后一次调用:文件scrape.py,第11行,在
soup.find_all'div',class=content_class TypeError:'NoneType'对象不可调用
我做错了什么?您之所以会出现此错误,是因为在BeautifulSoup中没有“查找所有”方法,有findAll方法,此代码应该会有所帮助
soup.findAll('div', {'class': 'content_class'})
出现此错误是因为在BeautifulSoup中没有find_all方法,有findAll方法,此代码应该会有所帮助
soup.findAll('div', {'class': 'content_class'})
您正在使用BeautifulSoup,但似乎在遵循BeautifulSoup的文档。仅在名为的最新主要版本中可用 我强烈建议您升级:
pip install beautifulsoup4
及
版本3在2012年停止接收更新;它现在已严重过时。您正在使用BeautifulSoup,但似乎遵循BeautifulSoup的文档。仅在名为的最新主要版本中可用 我强烈建议您升级:
pip install beautifulsoup4
及
版本3在2012年停止接收更新;它现在已经严重过时了。如果你把printsoup.find_all放在倒数第二行,会打印什么?所以我做了soup=BeautifulSouphtml,然后是printsoup.find_all,打印的是None。如果你把printsoup.find_all放在倒数第二行,什么是打印的?所以我做了soup=BeautifulSouphtml,然后打印soup.find_all,打印的是None。谢谢。我试过了,错误消失了,但我得到了一个空数组:[],但我确信该类内容\u类存在于文档中的多个div中。您真的不应该再使用BeautifulSoup版本3。现在已经5年多没有维修了。谢谢。我试过了,错误消失了,但我得到了一个空数组:[],但我确信该类内容\u类存在于文档中的多个div中。您真的不应该再使用BeautifulSoup版本3。现在已经5年多没有维修了。谢谢,我做到了!但是,我现在得到的导致此警告的代码位于文件scrape.py的第10行。要消除此警告,请将如下代码:BeautifulSoupYOUR\u MARKUP}更改为:BeautifulSoupYOUR\u MARKUP,html.parser MARKUP\u type=MARKUP_type@GeorgeWelder,只需按照警告中的说明操作即可。您也可以直接忽略它。@GeorgeWemmer:是的,BeautifulSoup 4用于为您自动选择一个解析后端,但这会导致以后安装LXML时出现意外更改。现在要求您做出明确的选择:soup=BeautifulSouphtml,'html.parser'或soup=BeautifulSouphtml,'lxml'或soup=BeautifulSouphtml,'html5lib'。乔治·沃默:请参阅每种选择的优缺点。@geogenewer:这与您发布的问题是分开的。这可能是因为您收到了破碎的HTML,或者您试图查找的特定HTML元素实际上不是源文档的一部分,而是由浏览器运行的JavaScript代码生成的。BeautifulSoup不是浏览器,无法执行JavaScript代码。谢谢,我做到了!但是,我现在得到的导致此警告的代码位于文件scrape.py的第10行。要消除此警告,请将如下代码:BeautifulSoupYOUR\u MARKUP}更改为:BeautifulSoupYOUR\u MARKUP,html.parser MARKUP\u type=MARKUP_type@GeorgeWelder,只需按照警告中的说明操作即可。您也可以直接忽略它。@GeorgeWemmer:是的,BeautifulSoup 4用于为您自动选择一个解析后端,但这会导致以后安装LXML时出现意外更改。现在要求您做出明确的选择:soup=BeautifulSouphtml,'html.parser'或soup=BeautifulSouphtml,'lxml'或soup=BeautifulSouphtml,'html5lib'。乔治·沃默:请参阅每种选择的优缺点。@geogenewer:这与您发布的问题是分开的。这可能是因为您收到了破碎的HTML,或者您试图查找的特定HTML元素实际上不是源文档的一部分,而是由浏览器运行的JavaScript代码生成的。BeautifulSoup不是浏览器,无法执行JavaScript代码。