Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 从不同选项卡获取Result时出错_Python_Beautifulsoup - Fatal编程技术网

Python 从不同选项卡获取Result时出错

Python 从不同选项卡获取Result时出错,python,beautifulsoup,Python,Beautifulsoup,我必须访问一些网站内容,但在使用BeautifulSoup将其删除时,我发现这个错误没有类型 #parsing the url import urllib2, sys from BeautifulSoup import BeautifulSoup site= "http://www.doctoralia.com.au/healthpros" hdr = {'User-Agent': 'Mozilla/5.0'} req = urllib2.Request(site,headers=hdr) p

我必须访问一些网站内容,但在使用BeautifulSoup将其删除时,我发现这个错误没有类型

#parsing the url
import urllib2, sys
from BeautifulSoup import BeautifulSoup

site= "http://www.doctoralia.com.au/healthpros"
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
last_page = soup.find('li', class_='last').a 
这是一个错误的回报

Traceback (most recent call last):
File "srapping1.py", line 10, in <module>
last_page = soup.find('li', class_='last').a
AttributeError: 'NoneType' object has no attribute 'a'
回溯(最近一次呼叫最后一次):
文件“srapping1.py”,第10行,在
最后一页=soup.find('li',class='last').a
AttributeError:“非类型”对象没有属性“a”

这是因为
soup.find('li',class='last')
找不到任何东西,所以它返回
None
(只需尝试使用
打印soup.find('li',class='last')
,您就会看到这个结果)这样一个非对象就没有
a
方法,换句话说,find方法不匹配任何条件。

您使用的是BeautifulSoup版本3,但尝试使用仅由BeautifulSoup版本4支持的语法

您必须将类属性查询作为字典传入:

soup.find('li', {'class':'last'})
并不是返回寻呼机元素;您首先要查找
ul.pager

last_page = soup.find('ul', {'class': 'pager'}).find('li', {'class': 'last'}).a
演示:

演示:

>>来自bs4导入组
>>>汤=美汤(r.含量)
>>>soup.select('ul.pager li.last a')[0]

意思是
最后一页
,这又意味着
汤。find
没有在页面上找到任何内容,并返回
。您在find方法中使用了“class”。这是故意的还是你的意思是“类”?我使用的是
bs4
4.3.1和
soup.find('li',attrs={'class':'last'})
可以在你的页面中找到目标元素。NoneType意味着你实际上没有任何你认为正在使用的类或对象的实例。这通常意味着上面的赋值或函数调用失败或返回意外结果。@user2109788我故意使用它,你知道如何获取最后一个制表符链接吗?我从这里得到了它。你以前多次提到过它,但我总是遇到这个问题,我已将它切换到版本4,它工作正常,我问了这个问题后就想起来了,soory@FazeelaAbuZohra:但是是的,我记不起我告诉过的每个人,所以你又被告知了。:-)如果您卸载了BeautifulSoup 3,那么下次导入错误可能会提醒您:-P
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup(r.content)
>>> soup.find('li', {'class':'last'})
<li class="last">Medical practice</li>
>>> soup.find('ul', {'class': 'pager'}).find('li', {'class': 'last'})
<li class="last"><a href="/healthpros/1563">1563</a></li>
last_page = soup.select('ul.pager li.last a')[0]
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(r.content)
>>> soup.select('ul.pager li.last a')[0]
<a href="/healthpros/1563">1563</a>