python爬虫知乎图片_Python爬虫入门教程 25-100 知乎文章图片爬取器之一

1. 知乎文章图片爬取器之一写在前面

今天开始尝试爬取一下知乎,看一下这个网站都有什么好玩的内容可以爬取到,可能断断续续会写几篇文章,今天首先爬取最简单的,单一文章的所有回答,爬取这个没有什么难度。

找到我们要爬取的页面,我随便选了一个

https://www.zhihu.com/question/292393947

1084个回答,数据量可以说非常小了,就爬取它吧。

2. 知乎文章图片爬取器之一选取操作库和爬取地址

爬取使用requests 存储使用 mongodb 就可以了

爬取地址经过分析之后,找到了一个可以返回json的数据接口

提取链接,看一下各参数的意思,方便我们程序模拟

https://www.zhihu.com/api/v4/questions/292393947/answers?include=data%5B%2A%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%3Bdata%5B%2A%5D.mark_infos%5B%2A%5D.url%3Bdata%5B%2A%5D.author.follower_count%2Cbadge%5B%2A%5D.topics&limit=5&offset=10&sort_by=default

上面的连接进行了URL编码,去找个解码工具解析一下,编程下面的URL就比较好解释了,answers后面跟了一堆的参数,应该是返回的关键字,找到limit每页显示的数据量,offset偏移量,我们下拉滚动条,发现这个在不断的叠加+5,sort_by 就是排序。

https://www.zhihu.com/api/v4/questions/292393947/answers?include=data[*].is_normal,admin_closed_comment,reward_info,is_collapsed,annotation_action,annotation_detail,collapse_reason,is_sticky,collapsed_by,suggest_edit,comment_count,can_comment,content,editable_content,voteup_count,reshipment_settings,comment_permission,created_time,updated_time,review_info,relevant_info,question,excerpt,relationship.is_authorized,is_author,voting,is_thanked,is_nothelp;data[*].mark_infos[*].url;data[*].author.follower_count,badge[*].topics&limit=5&offset=10&sort_by=default

做好上面的工作,接下来就是爬取了,我简化了一下爬取的地址,只保留了一些关键的信息

https://www.zhihu.com/api/v4/questions/292393947/answers?include=comment_count,content,voteup_count,reshipment_settings,is_author,voting,is_thanked,is_nothelp;data[*].mark_infos[*].url;data[*].author.follower_count,badge[*].topics&limit=5&offset=0&sort_by=default

3. 知乎文章图片爬取器之一编写代码

分析完毕之后,发现代码非常简单了

import requests

from fake_useragent import UserAgent

############## 数据存储

import pymongo

import time

DATABASE_IP = '127.0.0.1'

DATABASE_PORT = 27017

DATABASE_NAME = 'sun'

client = pymongo.MongoClient(DATABASE_IP,DATABASE_PORT)

db = client.sun

db.authenticate("dba", "dba")

collection = db.zhihuone # 准备插入数据

##################################

class ZhihuOne(object):

def __init__(self,totle):

self._offset = 0

self._totle = totle

#self._ua = UserAgent()

def run(self):

print("正在抓取 {} 数据".format(self._offset))

headers = {

"upgrade-insecure-requests":"1",

"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)"

}

with requests.Session() as s:

try:

with s.get("https://www.zhihu.com/api/v4/questions/292393947/answers?include=comment_count,content,voteup_count,reshipment_settings,is_author,voting,is_thanked,is_nothelp;data[*].mark_infos[*].url;data[*].author.follower_count,badge[*].topics&limit=5&offset={}&sort_by=default".format(self._offset),headers=headers,timeout=3) as rep:

data = rep.json()

if data:

collection.insert_many(data["data"])

except Exception as e:

print(e.args)

finally:

if self._offset <= self._totle:

self._offset = self._offset + 5 # 每次+5

print("防止被办,休息3s")

time.sleep(3)

self.run()

else:

print("所有数据获取完毕")

if __name__ == '__main__':

# 偏移量是0,5,10 i=1 (i-1)*5

zhi = ZhihuOne(1084)

zhi.run()

上面主程序入口中,我写了个1084 ,这个偷懒,就硬编码了,数据当然也可以通过爬取获取,没有任何问题

4. 知乎文章图片爬取器之一写在后面

本篇文章是知乎文章爬取器之一,接下来完善的功能 1. 爬取地址用户可以输入 2. 自动答案总数 3. 文章中图片自动下载 4. 等功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql主从复制不同步案例_Mysql主从不同步问题处理案例

在使用Mysql的主从复制架构中&#xff0c;有两个比较头疼的问题&#xff1a;1、主从数据不同步后如何处理2、主从同步延迟问题如何解决本文将根据实际案例来分析下问题1&#xff0c;至于问题2多数文档介绍的办法是启用多线程复制来解决&#xff0c;言归正传&#xff0c;这里的问…

九度oj题目1518:反转链表

题目1518&#xff1a;反转链表 时间限制&#xff1a;1 秒 内存限制&#xff1a;128 兆 特殊判题&#xff1a;否 提交&#xff1a;2567 解决&#xff1a;948 题目描述&#xff1a;输入一个链表&#xff0c;反转链表后&#xff0c;输出链表的所有元素。(hint : 请务必使用链表) 输…

python3.6生成exe_Python 3.6打包成EXE可执行程序的实现

1、下载pyinstaller python 3.6 已经自己安装了pip&#xff0c;所以只需要执行 pip install pyinstaller就可以了2、打包程序 进入到你你需要打包的目录&#xff1b;比如我在H:\xcyk开始打包&#xff0c;执行pyinstaller xxx.py我们发现&#xff0c;竟然报错&#xff01;&#…

登录mysql时 未找到 grant命令_我在mysql数据库中可以登陆,为什么用grant命令创建用户时提示错误?...

问题表象&#xff1a;我的mysql中的 my.ini文件配置&#xff1a;[csharp] view plaincopyprint?#Path to installation directory. All paths are usually resolved relative to this.basedir"D:/software_builder/mysql/"#Path to the database rootdatadir"C…

在 Apex 代码中生成 csv 文件

在 Apex 代码中生成 csv 文件可以写一个 Visualforce 页面&#xff0c;设定类型为 excel 的格式&#xff0c;然后调用 PageReference 的 getContent()方法来获取 Blob 格式&#xff0c;存放在附件。 不过另一种更简单的方式就是拼接字符串&#xff0c;csv 即逗号分隔值&#xf…

python实现五大基本算法_算法基础:五大排序算法Python实战教程

排序是每个算法工程师和开发者都需要一些知识的技能。 不仅要通过编码实现&#xff0c;还要对编程本身有一般性的了解。 不同的排序算法是算法设计如何在程序复杂性&#xff0c;速度和效率方面具有如此强大影响的完美展示。 让我们来看看前6种排序算法&#xff0c;看看我们如何…

将10进制整数转换成16进制整数输出

题意&#xff1a; 把十进制整数转换为十六进制&#xff0c;格式为0x开头&#xff0c;10~15由大写字母A~F表示。 Input 每行一个整数x&#xff0c;0< x < 2^31。 Output 每行输出对应的八位十六进制整数&#xff0c;包括前导0。 案例输出&#xff1a; Sample Input 0 1023…

opencvpython教程百度云资源_Python+OpenCV图像处理入门,视频教程下载

课程介绍&#xff1a; 李老师讲课生动、深入浅出&#xff0c;出版OpenCV编程案例详解、Python-OpenCV图穷录、MATLAB图像处理、MATLAB图像案例教程等在线课程。 本课程系统概括了Python-OpenCV的使用方法&#xff0c;让学习者快速入门。根据本课程规划的图书《Python-OpenCV图穷…

将结构体写入文件_将COCO检测结果写入json文件

最近很多朋友留言问我如何将检测结果写入json文件并且用于COCO API的评估&#xff0c;之前对于检测结果的格式已经做了简单的说明&#xff0c;这里提供一些简单的函数&#xff0c;直接调用将结果写入即可。用于COCO API测试的文件格式HUST小菜鸡&#xff1a;用于COCO API测试的…

LR通过SiteScope监控mysql

SiteScope下载&#xff0c;安装 要想使用LoadRunner监测MySQL数据库的性能&#xff0c;LoadRunner没有提供直接监测 MySQL的功能&#xff0c;所以&#xff0c;我们需要借助sitescope监控&#xff0c;然后在LoadRunner显示sitescope监测结果&#xff0c;这样间接地监控MySQL性能…

js for循环_JS 函数的执行时机(深入理解6个6)

定时器&#xff1a;setTimeout()setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式提示&#xff1a; 1000 毫秒 1 秒。 提示&#xff1a; 如果你只想重复执行可以使用 setInterval() 方法。 提示&#xff1a; 使用 clearTimeout() 方法来阻止函数的执行。语法&#x…

OCLint+Xcode 代码规范利器

很多公司里面都会强调代码规范的问题&#xff0c;开发者也都知道代码规范的好处。可实际开发中往往因为各种原因使我们把它的优先级不知不觉中降低了。  这里向一个有代码追求和洁癖的程序猿推荐一个分析工具&#xff0c;它可以成为你重构代码或着review的基本规则 OCLint是一…

python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

# coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding(utf8) # print os.getcwd() # 有些文件夹下面有很多文件夹&#xff0c;每个文件夹下面有很多视频文件&#xff0c;现在通过脚本&#xff0c;将文件夹下面的所有文件转移到一个目录下面 …

MySQL求类型为GX的平均积分_mysql基本操作

一、连接操作格式&#xff1a;mysql-h主机地址 -u用户名 -p用户密码例&#xff1a;连接到远程主机上的mysql假设远程主机的IP为&#xff1a;110.110.110.110用户名为root,密码为abcd123则键入以下命令&#xff1a;mysql-h110.110.110.110-uroot-pabcd123二、用户级操作1、selec…

PC-红警联机问题与下载

或许不是软件问题&#xff1a; 你做好相关设置了吗&#xff1f; 红警局域网联机的具体方法: 适用于原版红警、尤里复仇&#xff0c;及任何同样的扩展版。 第一步&#xff1a;安装IPX协议。 方法&#xff1a; 控制面板——网络连接&#xff08;或网上邻居属性&#xff09;——本…

k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

本文很长很长&#xff0c;有很多很多图&#xff0c;包含以下部分&#xff1a;1.算法简介2.如何分类平面点3.如何分类空间点4.如何分类多维数据5.后记提醒&#xff1a;以下内容包括&#xff1a;智障操作&#xff0c;无中生友&#xff0c;重复造轮子 等1.算法简介k均值聚类算法&a…

ip地址异常判定python_python检测异常ip,并查询ip详细信息

#!/usr/local/bin/python3# coding:utf-8import string, subprocess, send_mailfrom time import strftime, gmtime, sleep, reimport urllib.request, redef filter_tags(htmlstr):re_cdata re.compile(//]*//\]\]>, re.I) # 匹配CDATAre_script re.compile(]*>[^, re…

保持充沛的精力

转载的&#xff1a;原文地址&#xff1a;http://www.cnblogs.com/siylz/p/4589134.html不管我们做大事还是小事&#xff0c;最需要的是精力。一个人有了充沛的精力&#xff0c;干什么大事都不成问题。可是有不少人往往把他们那宝贵的精力胡乱挥橄在那些走无意义、自讨苦吃的事情…

php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询

我有一个输出类列表的while循环.在类数据库中,教师名称由用户数据库中的教师ID确定.这是我的数据库结构.Classes Database-----------------------------ID CLASS TEACHER1 product design 3User Database-----------------------------ID NAME3 John Doe因此,当列出我的类时,我…

Jq_网站顶部定时折叠广告

<!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head><title>网页顶部定时收起广告jQuery特效 - HoverTree</title><base target"_blank" /><style>a {color:blue;text-decoration:none;}</sty…