zhihu-python icon indicating copy to clipboard operation
zhihu-python copied to clipboard

user.get_followers_num() NoneType error

Open BravoMao opened this issue 8 years ago • 7 comments

我试着用了你们的API获取follow我的知乎人的followers 人数 大部分都运行挺好的 但爬有些人时候 会出现如下错误 我看get_followers_num的原码。。觉得没问题啊 不是很理解

Error in get_followers_num followers_num = int(soup.find("div", class_="zm-profile-side-following zg-clear")
AttributeError: 'NoneType' object has no attribute 'find_all'

代码如下

if __name__ == '__main__':

    user_url = "https://www.zhihu.com/people/BravoMaooo"
    user = User(user_url)
    user.get_followers_num()
    followers = user.get_followers()
    for follower in followers:
        try:
            print(follower.get_followers_num())
        except Exception:
            print('there is an error')
            print(Exception)
            print(follower.get_user_id())

那个出错用户的知乎链接 https://www.zhihu.com/people/KellenWang

谢谢指教

BravoMao avatar Apr 15 '16 16:04 BravoMao

你好,

我试着运行了如下代码,并没有发现错误,你要不重新clone一份再试下看?

from zhihu import Question
from zhihu import Answer
from zhihu import User
from zhihu import Collection

if __name__ == '__main__':

    user_url = "https://www.zhihu.com/people/BravoMaooo"
    user = User(user_url)
    user.get_followers_num()
    followers = user.get_followers()
    for follower in followers:
        try:
            print(follower.get_followers_num())
        except Exception:
            print('there is an error')
            print(Exception)
            print(follower.get_user_id())

egrcc avatar Apr 16 '16 06:04 egrcc

你好。。我没有clone 代码。。试着又run了下我本地的代码。。这次没问题。。下次我再遇到类似错误。再看吧。谢谢回复

BravoMao avatar Apr 16 '16 07:04 BravoMao

我今天爬内容的时候 又出现了我原来说的那个错误 followers_num = int(soup.find("div", class_="zm-profile-side-following zg-clear") \ AttributeError: 'NoneType' object has no attribute 'find_all'

我试着print 了下 soup.prettify() 里面确实没有class_="zm-profile-side-following zg-clear"....所以他找不到 那么 这个exception 也是可以理解的。。我不知道这是知乎采取的什么措施啥的。还是怎样。。

我看了下 发生错误的URL https://www.zhihu.com/people/suji-yan 里面的网页源码。里面是可以找到class_="zm-profile-side-following zg-clear" 但爬下来的soup 里面没有。。。

谢谢你们的指教~

BravoMao avatar Apr 18 '16 12:04 BravoMao

是的,我突然想起了之前有网友在邮件中也提到过类似的问题,

2016-04-18 20-55-49

如下是他的解决办法:

2016-04-18 20-57-57 2016-04-18 20-59-02

感谢 Liu 提供的解决办法

egrcc avatar Apr 18 '16 13:04 egrcc

我也遇到了这个问题,在爬取一段时间以后知乎会把首页的内容作为用户界面的内容返回给你,看了一下上面重复请求的办法,好像也没解决。

Tassandar avatar May 18 '16 01:05 Tassandar

我在知乎客户端不止一次遇到这样的情况,点击某个用户的界面时会显示我首页的内容,不知道有没有人跟我一样?我猜想这个是知乎那边的bug?

knarfeh avatar May 18 '16 02:05 knarfeh

搞定了...貌似知乎对headers中带有python字眼的请求做了修正,会丢一些奇怪的页面出来。把headers中的user-agent改成其他浏览器的名称就可以了。 我是在zhihu.py开头把headers改了。

requests = requests.Session()

requests.cookies = cookielib.LWPCookieJar('cookies')

fake_head= { 
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36',

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Connection':'keep-alive' 
}
requests.headers = fake_head

Tassandar avatar May 18 '16 03:05 Tassandar