Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用BeautifulSoup进行网站抓取:TypeError:“非类型”对象不可调用_Python_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 使用BeautifulSoup进行网站抓取:TypeError:“非类型”对象不可调用

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

我是个十足的初学者。我试着使用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.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代码。