网页视频抓取工具 知乎( 一下如何使用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,比较麻烦,使用起来也方便很多这个现成的轮子。以后想慢慢欣赏知乎的美,就不用再担心了,呵呵。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线