Code Monkey home page Code Monkey logo

zhihu-python's Issues

获取一个用户所有答案时写文件报错!

我在获取某个用户答案时,发现如果该问题描述中含有反斜杠 /,写文件时就会报错!
f = open(os.path.join(os.path.join(os.getcwd(), "text"), file_name), "wt")
IOError: [Errno 2] No such file or directory: '/home/liutong/zhihu-python/text/\xe6\x9c\x8d\xe7\x94\xa8\xe6\x8a\x97\xe6\x8a\x91\xe9\x83\x81\xe8\x8d\xaf/\xe6\x8a\x97\xe7\x84\xa6\xe8\x99\x91\xe8\x8d\xaf\xe6\x98\xaf\xe4\xbb\x80\xe4\xb9\x88\xe4\xbd\x93\xe9\xaa\x8c\xef\xbc\x9f\xe5\x96\xb5\xe5\x96\xb5\xe4\xb9\x88\xe4\xb9\x88\xe4\xb9\x88\xe7\x9a\x84\xe5\x9b\x9e\xe7\xad\x94.txt'
我的系统是ubuntu 14.04

无法正常的获取点赞的用户

设answers = user.get_answers()

for answer in answers:
voters = answer.get_voters()
中,执行
upvote = answer.get_upvote()
是正常的。
但是
for voter in voters:
upvoter.append(voter.user_url())
则出现错误。
附上代码:

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 04 22:22:07 2016

@author: TsingJyujing
"""
from zhihu import Question
from zhihu import Answer
from zhihu import User
from zhihu import Collection

user_url = "https://www.zhihu.com/people/qing-yu-ying"
user = User(user_url)
answers = user.get_answers()
upvoter = []
upgende = []
userids = []

for answer in answers:
    voters = answer.get_voters()
    try:
        upvote = answer.get_upvote()
        print "Upvote times:",upvote
        for voter in voters:
            upvoter.append(voter.user_url())
            upgende.append(voter.get_gender())
            uid = voter.get_user_id()
            userids.append(uid)
            print len(upvoter),':',upvoter[-1]
    except:
        print "Error"

解决方案:
第902行修改为:

        data_aid = soup.find("div", class_="entry-body")["data-aid"]

windows下打开验证码出错

auth.py 96行 os.system("open %s &" % image_name )

应该改成os.system(" %s " % image_name )

windows下直接输入文件名就会以默认程序打开

auth.py 登录出错。

一开始登录时,发现一直报错:
SUCCES: 登录失败!
WARN: unknown error.

打印具体错误信息为:
{
'error': {
'message': None,
'code': 100003,
'data': {
u'account': u'\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u90ae\u7bb1'
#请输入正确的邮箱
}
}
}
经浏览器确认登录,邮箱密码没有问题。
当对应邮箱的密码输错时,同样报上面的错误,很奇怪。

登录失败...

@egrcc 同样的环境(ubuntu14.04 python2.76 firefox),用户名密码cookies都写了但是怎么都是Login Failed 请填写验证码。。

User的get_followers()

好像知乎服务器限制offset为一万以内?超出一万直接返回空,建议代码里做下限制

get_topic出现列表越界

line 878, in get_topics
yield topic_list[j].find("strong").string.encode("utf-8")
IndexError: list index out of range

输入密码不正确时,显示unknow error

当输入的密码不正确的时候,显示

SUCCES: 登录失败 !
WARN: unknow error.

此时,提交表单的返回值为:

{
“r": 1,
"errcode": 100005,
"data" : {"password": incorrect_password}
"msg": null
}

get_all_answers()貌似无法处理自己回答

当某问题下回答包含自己的回答的时候。
Question.get_all_answers()貌似不能抓到自己的回答。
并且当自己的回答排在最后的时候会出错

    url="http://www.zhihu.com/question/xxxxx"
    Q=Question(url)
    for i in Q.get_all_answers():
        print i.answer_url
Traceback (most recent call last):
  File "/home/kehao/Documents/zhihu-python-master/test.py", line 37, in <module>
    get_a_question()
  File "/home/kehao/Documents/zhihu-python-master/test.py", line 28, in get_a_question
    for i in Q.get_all_answers():
  File "/home/kehao/Documents/zhihu-python-master/zhihu.py", line 188, in get_all_answers
    count = soup.find_all("span", class_="count")[j].string
IndexError: list index out of range

网络异常

用户失效后重新登录报错:

WARN:网络故障
INFO: 正在加载配置文件 ...
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/��Ӱ/���ݽṹ���㷨/auth.py", line 241, in
login()
File "C:/Users/Administrator/PycharmProjects/��Ӱ/���ݽṹ���㷨/auth.py", line 213, in login
form_data = build_form(account, password)
File "C:/Users/Administrator/PycharmProjects/��Ӱ/���ݽṹ���㷨/auth.py", line 115, in build_form
form['_xsrf'] = search_xsrf()
File "C:/Users/Administrator/PycharmProjects/��Ӱ/���ݽṹ���㷨/auth.py", line 101, in search_xsrf
raise NetworkError(u"验证码请求失败")
main.NetworkError
ERROR: 网络异常

这个是网络异常还是登录失败了

Answer.get_question()失败

错误报告如下,应该是知乎换了格式了
Traceback (most recent call last):
File "./crawl.py", line 19, in
print "\nQuestion " + ": " + answer.get_question().get_title() + "\n"
File "filepath/zhihu.py", line 1070, in get_question
question_link = soup.find("h2", class_="zm-item-title zm-editable-content").a
AttributeError: 'NoneType' object has no attribute 'a'

验证码不正确

大大你好,我在执行auth.py的时候按图片输入验证码后一直提示验证码错误,是知乎改验证方式了吗

获取关注人数的时候脚本会自动停止

大概在获取 800 多名用户之后,脚本就会自动停止,也没有报错,后台运行状态似乎是正常的:

root 10371 0.9 10.4 273236 52232 ? Sl 09:35 6:23 python my_programe.py

Some changes to get test.py working

Hi,
First of all, really appreciate for all the effort to make such a fantastic python crawl for ZhiHu.
But there are some error when I tried to run test.py after cloned.
I made the following to changes to get it to work.

  1. in auth.py,
    def islogin():
    url = "http://www.zhihu.com/settings/profile"
    -- change to
    url = "https://www.zhihu.com/settings/profile"
  2. I think zhihu change some html tag : in zhihu.py
    change from
    soup.find("h3", class_="zm-item-answer-author-wrap")
    to
    soup.find("div", class_="zm-item-answer-author-info")
  3. change class user
    from
    elif user_url[0:28] != "https://www.zhihu.com/people/"
    to
    elif user_url.startswith('www.zhihu.com/people', user_url.index('//')+2) == False

Then everything works fine.

Thanks again for such a brilliant work

Cheers.

加个获取用户关注的话题的功能行不?

加在user类里。。最好把我写的代码改一下再加进去,或者再加个topic类啥的
python
def get_topics_num(self):
if self.user_url == None:
print "I'm anonymous user."
return 0
else:
if self.soup == None:
self.parser()
soup = self.soup
try:
topics_num = soup.find_all("div", class_="zm-profile-side-section-title")[1].strong.string.encode("utf-8")
I=''
for i in topics_num:
if i.isdigit():
I=I+i
topics_num=int(I)
return topics_num
except:
print self.get_user_id()
return 0

def get_topics(self):
    if self.user_url == None:
        print "I'm anonymous user."
        return
    else:
        topics_num = self.get_topics_num()
        print topics_num
        if topics_num == 0:
            return ""
        else:
            for i in xrange((topics_num - 1) / 20 + 1):
                topics_url = self.user_url + "/topics"

                r = requests.get(topics_url)
                lovetopic=""
                soup = BeautifulSoup(r.content)
                for topics in soup.find_all("div", class_="zm-profile-section-item zg-clear"):
                    name =topics.find("strong").string.encode("utf-8")
                    lovetopic=lovetopic+name+"|"
                return lovetopic

数组越界

seed =Question("https://www.zhihu.com/question/26746768")
allTheAnswers = [i for i in seed.get_all_answers()]
Traceback (most recent call last):
File "", line 1, in
File "zhihu.py", line 188, in get_all_answers
if soup.find_all("div", class_="zm-item-answer")[j].find("span", class_="count") == None:
IndexError: list index out of range

auth.py登录一直返回500错误

`def search_xsrf():
"""

:rtype: object
"""
url = "http://www.zhihu.com/"
r = requests.get(url, verify=False)
if int(r.status_code) != 200:
    raise NetworkError(u"验证码请求失败")`

这里一直返回500,错误就是验证码请求失败

获取点赞人数的问题

似乎是一个bug,请您再确认一下。获取点赞人数失败,或者数字不对。

运行test.py

1。 如果某问题下只有一个回答,则
upvote = answer.get_upvote() 运行失败,报错。

比如说 answer_url = "https://www.zhihu.com/question/38214680/answer/79481584" ,
报错信息:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
File "test.py", line 79, in answer_test
upvote = answer.get_upvote()
File "~/zhihu-python-master/zhihu.py", line 757, in get_upvote
count = soup.find("span", class_="count").string
AttributeError: 'NoneType' object has no attribute 'string'
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2。 如果该问题下有多个回答,则获得的赞数不是这个回答的,而是紧挨着它的下一个回答的。

比如,answer_url = "https://www.zhihu.com/question/33567660/answer/79138286"

结果输出:
++++++++++++++++++++++++++++++++++++++++++++
**为什么不拍一部《伟大的抗日战争》呢?--石头布的回答.txt
**为什么不拍一部《伟大的抗日战争》呢?--石头布的回答.md
<zhihu.Question instance at 0x17fc950>
**为什么不拍一部《伟大的抗日战争》呢?
<zhihu.User instance at 0xbdfc68>
<generator object get_voters at 0xbde0f0>
石头布
529 <---- 是下一个回答的赞数。
14537
++++++++++++++++++++++++++++++++++++++++++++
其中 529 是下一个回答的赞数。

登录模块用requests中的Session()来做应该会更方便

个人建议,登录可以用requests.Session()做,这样都不必输入验证码,还是挺方便的
_xsrf 可以在登录页面中解析出来
伪代码:
s = requests.Session()
post_data = {'username':'','password':''}
post_data['_xsrf'] = _xsrf
post_data['remember_me'] = 'true'
login_rspn = self.s.post(LOGIN_URL,headers=HEADERS,data=post_data,timeout=10,verify=False)

之后用s中就会保存登录信息了
用s.get()发情求就行

报错怎么解决?

执行 pip install requests 时,报错:

root@iZ23totlue9Z:~/mine/zhihu-python# pip install requests
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 246, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
    requirement_set.prepare_files(finder)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 345, in prepare_files
    functools.partial(self._prepare_file, finder))
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 290, in _walk_req_to_install
    more_reqs = handler(req_to_install)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 415, in _prepare_file
    req_to_install, finder)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 366, in _check_skip_installed
    req_to_install.check_if_exists()
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 986, in check_if_exists
    self.satisfied_by = pkg_resources.get_distribution(self.req)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 533, in get_distribution
    dist = get_provider(dist)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 413, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 934, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 811, in resolve
    env = Environment(self.entries)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 991, in __init__
    self.scan(search_path)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1021, in scan
    self.add(dist)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1037, in add
    if self.can_add(dist) and dist.has_version():
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2742, in has_version
    self.version
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2550, in version
    for line in self._get_metadata(self.PKG_INFO):
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2594, in _get_metadata
    for line in self.get_metadata_lines(name):
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1990, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1984, in get_metadata
    with open(self.path,'rU') as f:
IOError: [Errno 2] No such file or directory: '/usr/lib/python2.7/dist-packages/setuptools.egg-info'

get_all_answers 方法仍然出现数组越界错误

qid = '27099248'
q = Question('https://www.zhihu.com/question/'+qid)
A = [i for i in q.get_all_answers()]

这个bug并不是对每个问题都出现,只有少部分,比如上面这个qid,才会出现

256 soup = BeautifulSoup(self.soup.encode("utf-8"))
257 print "j",j
--> 258 answer_soup = BeautifulSoup(answer_list[j])
259
260 if answer_soup.find("div", class_="zm-editable-content clearfix") == None:

IndexError: list index out of range

我对于258行前后加了输出来观察,发现在i=1时,answer_list长度只有16,而min(answers_num - i * 20, 20) =20,所以越界了

看起来像是soap没有能取回剩下的答案。
如果将for j in xrange(min(answers_num - i * 20, 20)): 改为 for j in xrange(len(answer_list)):

那么i=1这一个循环可以通过,
但i=2时 answer_list长度就是0

爬下来了,但还是会报错

这回应该不是我安装的问题啦

from zhihu import Question

url = "http://www.zhihu.com/question/29862735"
question = Question(url)
answers = question.get_all_answers()
for answer in answers:
    answer.to_txt()
    answer.to_md()
root@AY1407131602375Z:~/zhihu-python# python test001.py
Login Failed, reason is:
请填写验证码
Use cookies
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--喻长大的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--喻长大的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--海天的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--海天的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--mu peng的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--mu peng的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--desire caution的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--desire caution的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--清风浅的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--清风浅的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--吴名士的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--吴名士的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--程啸的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--程啸的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--meggie huo的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--meggie huo的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--左牵黄右擎苍的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--左牵黄右擎苍的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--张赞的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--张赞的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--卢百万的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--卢百万的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Jack Nee的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Jack Nee的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--张萌萌blingbling的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--张萌萌blingbling的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--章子晏的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--章子晏的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--鱼吞舟的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--鱼吞舟的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--王粤北的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--王粤北的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--苏昕的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--苏昕的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--William的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--William的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--姜委员长的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--姜委员长的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Richard L的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Richard L的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--周如南的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--周如南的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--此人已失控的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--此人已失控的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--山羊月的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--山羊月的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--路加的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--路加的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--姚泽云的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--姚泽云的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--零崎月光的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--零崎月光的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--胡杨的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--胡杨的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--周大明白的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--周大明白的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--送赞干不的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--送赞干不的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--废了完了算了的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--废了完了算了的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--飞面福音的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--飞面福音的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--克里斯的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--克里斯的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--杨怀斌的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--杨怀斌的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Roland Xu的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Roland Xu的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--很卡的哇伊叔的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--很卡的哇伊叔的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--于经文的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--于经文的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--你们啊就想的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--你们啊就想的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--匿名用户的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--匿名用户的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--yoco的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--yoco的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--云宇的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--云宇的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--富丽的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--富丽的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--凤红邪的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--凤红邪的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--李炜的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--李炜的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--匿名用户的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--匿名用户的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Parasession的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Parasession的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--海小呆的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--海小呆的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Chinito超强的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Chinito超强的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Rice Naomi的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--Rice Naomi的回答.md
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--黄武鹏的回答.txt
为什么没看见神和神迹,还会有 20 亿基督徒,近 40 亿人信仰上帝?--黄武鹏的回答.md
Traceback (most recent call last):
  File "test001.py", line 6, in <module>
    for answer in answers:
  File "/root/zhihu-python/zhihu.py", line 248, in get_all_answers
    answer = soup.find_all("div", class_=" zm-editable-content clearfix")[j]
IndexError: list index out of range

auth.py验证码请求失败

C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py:838: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/security.html
InsecureRequestWarning)
WARN: 网络故障
ERROR: 网络异常
Traceback (most recent call last):
File "C:/Users/Administrator/Downloads/zhihu-python-master/zhihu-python-master/auth.py", line 240, in
login(account="马赛克@qq.com", password="马赛克")
File "C:/Users/Administrator/Downloads/zhihu-python-master/zhihu-python-master/auth.py", line 213, in login
form_data = build_form(account, password)
File "C:/Users/Administrator/Downloads/zhihu-python-master/zhihu-python-master/auth.py", line 115, in build_form
form['_xsrf'] = search_xsrf()
File "C:/Users/Administrator/Downloads/zhihu-python-master/zhihu-python-master/auth.py", line 101, in search_xsrf
raise NetworkError(u"验证码请求失败")
main.NetworkError

登录失败

我在试用这个程序的时候,在config.ini里输入了自己的邮箱和密码,但是为什么总是显示登录失败?

使用生成器的时候报错

yield User(user_url_list[j].a["href"], user_url_list[j].a.string.encode("utf-8")) IndexError: list index out of range

验证码登录出错

raceback (most recent call last):
  File "auth.py", line 231, in <module>
    login()
  File "auth.py", line 214, in login
    result = upload_form(form_data)
  File "auth.py", line 137, in upload_form
    r = requests.post(url, data=form, headers=headers)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 497, in post
    return self.request('POST', url, data=data, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 455, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 558, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 378, in sendraise ConnectionError(e)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='www.zhihu.com', port=80): Max retries exceeded with url: /login/email (Caused by <class 'socket.error'>: [Errno 104] Connection reset by peer)

question.get_top_i_answers() 和 question.get_all_answers() 获取答案失败

question.get_top_i_answers() 和 question.get_all_answers() 都只能获得10 个回答了,测试了几个问题,包括test 中的 http://www.zhihu.com/question/24269892

`url = "http://www.zhihu.com/question/24269892"

question = Question(url)

print question.get_answers_num()

q=question.get_top_i_answers(20)
for i in q:
print i`

`<zhihu.Answer instance at 0x10441a1b8>
<zhihu.Answer instance at 0x115b378c0>
<zhihu.Answer instance at 0x1177319e0>
<zhihu.Answer instance at 0x1150dab00>
<zhihu.Answer instance at 0x117833b90>
<zhihu.Answer instance at 0x11587d368>
<zhihu.Answer instance at 0x1159a6e18>
<zhihu.Answer instance at 0x11698bf80>
<zhihu.Answer instance at 0x115614c68>

<zhihu.Answer instance at 0x1174d1170>

IndexError Traceback (most recent call last)
in ()
4 print question.get_answers_num()
5 q=question.get_top_i_answers(20)
----> 6 for i in q:
7 print i

/Users/traveltao/Desktop/zhihu-python-master/zhihu.py in get_top_i_answers(self, n)
460 j = 0
461 answers = self.get_all_answers()
--> 462 for answer in answers:
463 j = j + 1
464 if j > n:

/Users/traveltao/Desktop/zhihu-python-master/zhihu.py in get_all_answers(self)
342
343 is_my_answer = False
--> 344 if soup.find_all("div", class_="zm-item-answer")[j].find("span", class_="count") == None:
345 my_answer_count += 1
346 is_my_answer = True

IndexError: list index out of range `

Json decode失败---ayth.py

142 行的 result = r.json() 改成:

body = r.content
print body
result = json.loads(body)

可以正常登陆。
78jph ve ckmmaxo4034wro

user.get_followers_num() NoneType error

我试着用了你们的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

谢谢指教

爬取用户回答,如果遇到用户某回答被和谐,爬虫自动终止,不能自动跳过

File "run.py", line 7, in
answer.to_txt()
File "/Users/zhanghe/PycharmProjects/spider/zhihu-python/zhihu.py", line 795, in to_txt
content = self.get_content()
File "/Users/zhanghe/PycharmProjects/spider/zhihu-python/zhihu.py", line 779, in get_content
soup.body.append(answer)
File "/Users/zhanghe/PycharmProjects/spider/venv/lib/python2.7/site-packages/bs4/element.py", line 366, in append
self.insert(len(self.contents), tag)
File "/Users/zhanghe/PycharmProjects/spider/venv/lib/python2.7/site-packages/bs4/element.py", line 300, in insert
raise ValueError("Cannot insert None into a tag.")
ValueError: Cannot insert None into a tag.

answer类中的get_content函数无法返回

获取指定用户的所有答案,get_upvote()正常,但进入get_content()函数之后就在里面死循环了
单步发现是在beautifulsoup里面find_all函数里面出不来
image

另外运行脚本时会出现这样的警告
image

环境是虚拟机上的ubuntu14.04 python2.7.6, 请问这可能是什么问题呢?谢谢!

auth.py登录返回403错误

INFO: 正在加载配置文件 ...
INFO: 提取XSRF 代码失败
INFO: 正在调用外部程序渲染验证码 ...
INFO: Command: xdg-open verify.gif &
请输入验证码: EPY3
ERROR: 网络异常

Traceback (most recent call last):
  File "auth.py", line 249, in <module>
    login()
  File "auth.py", line 228, in login
    result = upload_form(form_data)
  File "auth.py", line 146, in upload_form
    raise NetworkError(u"表单上传失败!")
__main__.NetworkError

我是根据配置文件登录,输入验证码后,这里一直返回403,另外我已经在auth.py中所有requests.get添加了headers.

登录需要验证码填写

r = s.post('http://www.zhihu.com/login', data = login_data, headers = header)

得到的是
{u'msg': {u'captcha': u'\u8bf7\u586b\u5199\u9a8c\u8bc1\u7801'}, u'r': 1, u'errcode': 269}

那些unicode的意思是“请填写验证码”,所以现在无法完成最开始的登录,不知道如何解决?谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.