Giter Site home page Giter Site logo

zsxq-spider's Introduction

zsxq-spider

爬取知识星球,并制作 PDF 电子书。https://www.zsxq.com/

简介

本代码参考了网上的其他开源代码和一些文章。
我需要生成一个可以真正方便我浏览知识星球中历史内容的 PDF,但是感觉大家只偏重于技术实现,不太满足我的需求,所以就自己再加工了一版。
目前生成的 PDF 至少能够让自己满意了。

功能

  • 支持下载图片并写入 PDF。
  • 支持 PDF 中显示链接。
  • 支持下载评论。
  • 可控制只下载精华内容或下载全部内容。
  • 支持按时间区间下载。

环境

  • Python 3.7 测试通过。
  • 安装 wkhtmltox,https://wkhtmltopdf.org/downloads.html。安装后将 bin 目录加入到环境变量。
  • 安装相应依赖:pip install pdfkit
  • 安装 BeautifulSoup:pip install BeautifulSoup4
  • 安装 Requests:pip install requests

用法

参考以下配置内容

ZSXQ_ACCESS_TOKEN = '86D82CA0-301A-3797-8528-D09322903A59_6DF24A4ED3558CD4'    # 登录后Cookie中的Token(必须修改)
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0'    # 登录时使用的User-Agent(必须修改)
GROUP_ID = '452445212848'                         # 知识星球中的小组ID
PDF_FILE_NAME = '电子书.pdf'                       # 生成PDF文件的名字
DOWLOAD_PICS = True                               # 是否下载图片 True | False 下载会导致程序变慢
DOWLOAD_COMMENTS = True                           # 是否下载评论
ONLY_DIGESTS = False                              # True-只精华 | False-全部
FROM_DATE_TO_DATE = False                         # 按时间区间下载
EARLY_DATE = '2017-05-25T00:00:00.000+0800'       # 最早时间 当FROM_DATE_TO_DATE=True时生效 为空表示不限制 形如'2017-05-25T00:00:00.000+0800'
LATE_DATE = '2018-05-25T00:00:00.000+0800'        # 最晚时间 当FROM_DATE_TO_DATE=True时生效 为空表示不限制 形如'2017-05-25T00:00:00.000+0800'
DELETE_PICS_WHEN_DONE = True                      # 运行完毕后是否删除下载的图片
DELETE_HTML_WHEN_DONE = True                      # 运行完毕后是否删除生成的HTML
COUNTS_PER_TIME = 30                              # 每次请求加载几个主题 最大可设置为30
DEBUG = False                                     # DEBUG开关
DEBUG_NUM = 120                                   # DEBUG时 跑多少条数据后停止 需与COUNTS_PER_TIME结合考虑
SLEEP_FLAG = True                                 # 请求之间是否SLEEP避免请求过于频繁
SLEEP_SEC = 2                                     # SLEEP秒数 SLEEP_FLAG=True时生效

ZSXQ_ACCESS_TOKEN 需要自己在浏览器里登录一次,然后查看Cookie中的值。
USER_AGENT 需要保证和登录时的一致。
GROUP_ID 可以从浏览器地址栏中看到,或者截取网络请求。
修改完以上参数后,cd到文件夹所在路径,运行crawl.py。

说明

  1. 请大家合理使用本代码,不要随意传播生成的PDF,保护网站及作者的合法权益。
  2. 爬虫会对网站性能造成一定影响,请勿频繁使用,在必要时合理使用,大家都是去学习知识的,体谅一下吴老板。

zsxq-spider's People

Contributors

wbsabc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

zsxq-spider's Issues

提几个建议点

用了下,挺好用的。提几个建议点:
(1)开始时间和结束时间,改成日期,是否会更方便一点
(2)生成文件时,页面排序,可以按正序排列,更符合人阅读习惯
(3)可以增加,排除一些作者的功能
(4)转化的文件标题,可以加上时间信息,更好区分
(5)出现异常时,打印的中文错误有乱码

生成PDF文件出现的问题

首先感谢大佬写的程序,非常好用。

然后就是如果抓取的数据,比较多的情况下,无法生成PDF。数据量小的情况下没有问题。

看了一下,资源应该是抓取到了,可能是生成PDF的时候出了问题。以为是pdfkit的问题,去搜了一下,也没找到原因。如果大佬有空的话,麻烦看一下为什么会这样。主要是想知道原因,但是我对python 不熟,不太会分析debug,也没有IDE。

环境如图。
Screen Shot 2021-01-17 at 13 54 18
Screen Shot 2021-01-17 at 13 54 29

Error

Traceback (most recent call last):
File "C:\Users\duanh\Desktop\zsxq-spider-master\crawl.py", line 262, in
make_pdf(get_data(url))
File "C:\Users\duanh\Desktop\zsxq-spider-master\crawl.py", line 60, in get_data
for topic in json.loads(f.read()).get('resp_data').get('topics'):
TypeError: 'NoneType' object is not iterable

你好,想问下NoneType' object is not iterable应如何解决?

您好,很冒昧打扰下:

我依据您的建议,修改了配置内容,并更改为我的ZSXQ_ACCESS_TOKEN。但还是出现了以下错误:

Traceback (most recent call last): File "/Users/Cooper/Downloads/zsxq-spider-master/crawl.py", line 262, in <module> make_pdf(get_data(url)) File "/Users/Cooper/Downloads/zsxq-spider-master/crawl.py", line 60, in get_data for topic in json.loads(f.read()).get('resp_data').get('topics'): TypeError: 'NoneType' object is not iterable

我查了下说是可能将None赋给多个值时导致的报错,这可能是我的Cookies失效导致的吗?

查看本地temp.json文件显示401,请问我应该如何解决呢?

谢谢~

中途报警了

Warning (from warnings module):
File "D:\Program Files\Python37\lib\site-packages\bs4_init_.py", line 333
MarkupResemblesLocatorWarning
MarkupResemblesLocatorWarning: "...." looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.
中途报警一次,又跑了几行,然后就没反应了,是停止还是暂停
微信截图_20200817212129

1

1

报错了,不清楚哪里出了问题

Traceback (most recent call last):
File "D:\py program\zsxq-spider-master\crawl.py", line 262, in
make_pdf(get_data(url))
File "D:\py program\zsxq-spider-master\crawl.py", line 60, in get_data
for topic in json.loads(f.read()).get('resp_data').get('topics'):
TypeError: 'NoneType' object is not iterable

安装了环境 电子书生生成失败 提示乱码

电子书生成失败!
��Ϣ: ���ṩ��ģʽ�޷��ҵ��ļ���

Process finished with exit code 0

环境配置好了,前面文章的链接和图片也能下载,似乎到了组成pdf时出错。

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.