网页视频抓取工具 知乎( 一下如何使用Python的开源爬虫,发现果然很好用 )
优采云 发布时间: 2022-01-15 07:02网页视频抓取工具 知乎(
一下如何使用Python的开源爬虫,发现果然很好用
)
基于python的知乎开源爬虫知乎_oauth使用介绍
今天无意中发现了一个开源爬虫知乎,它基于Python,名字叫知乎_oauth。看了一下github上的star数,貌似文档挺详细的,所以稍微研究了一下。片刻。发现真的很有用。在这里,我将向您展示如何使用它。
该项目的主页地址是:. 作者的知乎主页是:.
该项目的文档地址是:. 平心而论,原作者已经非常详细地解释了如何使用这个库,我在这里重复是多余的。因此,如果您想了解有关如何使用此库的更多信息,请转到官方文档。我只提我觉得需要补充的重点。
首先是安装。作者已经将项目上传到pypi,所以我们可以直接使用pip安装。据作者介绍,该项目对Python3的支持较好,目前兼容Python2,所以最好使用python3.直接pip3 install -U 知乎_oauth进行安装。
安装后,第一步是登录。只需使用下面的代码登录即可。
from zhihu_oauth import ZhihuClient
from zhihu_oauth.exception import NeedCaptchaException
client = ZhihuClient()
user = 'email_or_phone'
pwd = 'password'
try:
client.login(user, pwd)
print(u"登陆成功!")
except NeedCaptchaException: # 处理要验证码的情况
# 保存验证码并提示输入,重新登录
with open('a.gif', 'wb') as f:
f.write(client.get_captcha())
captcha = input('please input captcha:')
client.login('email_or_phone', 'password', captcha)
client.save_token('token.pkl') # 保存token
#有了token之后,下次登录就可以直接加载token文件了
# client.load_token('filename')
以上代码直接使用账号密码登录,最后登录后保存token。下次登录时,我们可以直接使用token登录,无需每次都输入密码。
登录后,当然可以做很多事情。比如下面的代码可以获取你知乎账号的基本信息
from __future__ import print_function # 使用python3的print方法
from zhihu_oauth import ZhihuClient
client = ZhihuClient()
client.load_token('token.pkl') # 加载token文件
# 显示自己的相关信息
me = client.me()
# 获取最近 5 个回答
for _, answer in zip(range(5), me.answers):
print(answer.question.title, answer.voteup_count)
print('----------')
# 获取点赞量最高的 5 个回答
for _, answer in zip(range(5), me.answers.order_by('votenum')):
print(answer.question.title, answer.voteup_count)
print('----------')
# 获取最近提的 5 个问题
for _, question in zip(range(5), me.questions):
print(question.title, question.answer_count)
print('----------')
# 获取最近发表的 5 个文章
for _, article in zip(range(5), me.articles):
print(article.title, article.voteup_count)
当然,还有更多的事情可以做。例如,如果我们知道一个问题的url地址或问题id,就可以得到一共有多少个答案、作者信息等一系列详细信息。开发者真的很周到,基本把常用的信息都收录了。具体代码我就不贴了,大家可以自行参考官方文档。
一个小tip:由于这个库有很多类,比如获取作者信息的类,获取文章信息的类等等。每个类都有很多方法。我查看了官方文档。作者没有列出某些类的所有属性。那么我们如何查看这个类的所有属性呢?其实很简单,用python的dir函数,用dir(object)查看对象类(或对象)的所有属性。例如,如果我们有一个 answer 类的对象,使用 dir(answer) 将返回 answer 对象的所有属性的列表。除了一些默认属性外,我们还可以找到这个类需要的属性,非常方便。(以下是集合的所有属性,即采集夹类)
['__class__','__delattr__','__dict__','__doc__','__format__','__getattribute__','__hash__','__init__','__module__','__new__','__reduce__','__reduce_ex__',' __repr__','__setattr__','__sizeof__','__str__','__subclasshook__','__weakref__','_build_data','_build_params','_build_url','_cache','_data','_get_data','_id' ,'_method','_refresh_times','_session','answer_count','answers','articles','comment_count','comments','contents','created_time','creator','description',' follower_count','追随者','id','is_public'、'pure_data'、'refresh'、'title'、'updated_time']
最后我用这个类把知乎某题的答案里的所有图片都抓了下来(抓美图,哈哈哈),只用了不到30行代码(去掉注释)。与大家分享。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/5/3 14:27
# @Author : wang
# @Email : 540913723@qq.com
# @File : save_images.py
'''
@Description:保存知乎某个问题下所有答案的图片
'''
from __future__ import print_function # 使用python3的print方法
from zhihu_oauth import ZhihuClient
import re
import os
import urllib
client = ZhihuClient()
# 登录
client.load_token('token.pkl') # 加载token文件
id = 24400664 # https://www.zhihu.com/question/24400664(长得好看是一种怎么样的体验)
question = client.question(id)
print(u"问题:",question.title)
print(u"回答数量:",question.answer_count)
# 建立存放图片的文件夹
os.mkdir(question.title + u"(图片)")
path = question.title + u"(图片)"
index = 1 # 图片序号
for answer in question.answers:
content = answer.content # 回答内容
re_compile = re.compile(r'(https://pic\d\.zhimg\.com/.*?\.(jpg|png))')
img_lists = re.findall(re_compile,content)
if(img_lists):
for img in img_lists:
img_url = img[0] # 图片url
urllib.urlretrieve(img_url,path+u"/%d.jpg" % index)
print(u"成功保存第%d张图片" % index)
index += 1
如果自己写,直接抓取网页并解析无法得到所有答案,只能破解知乎的api,比较麻烦,使用起来也方便很多这个现成的轮子。以后想慢慢欣赏知乎的美,就不用再担心了,呵呵。