Comments (1)
感谢反馈,非常用心的建议。看到这么细致的建议,有点受宠若惊。
关于输出
当初设计输出微博目的只是为了告诉使用者,程序正在获取信息中,并且展示微博的部分信息给使用者。建议很有意义,只是如果写入文件,是不是这些打印信息只写入文件里,不在显示在shell里。如果这样,优点是更简单,进度条没有被覆盖,清晰明了;缺点是不如打印更直观。打印微博其实是在告诉使用者:这条打印的微博已经获取了。如果不打印,使用者看到的只有进度条,具体获得了哪些微博只能打开打印写入的文件。但是如果这样,csv等结果文件信息更多,打印文件有的内容,结果文件都有,是否有必要即写打印又写结果。所以,我更倾向于直接打印微博。打印中添加原微博地址是一个非常好的建议,这个后面会加上,将打印写入文件目前还不确定是否要加上这个功能。
关于避免限制
非常好的建议,因为使用者要爬的微博多种多样。对应只爬少量微博的使用者,sleep时间不需要太长,对于要爬大量微博的使用者,sleep又需要很长。目前默认的sleep无法适应所有情况。我再考虑将sleep策略单独写一个方法。如每爬10页等待多少秒,每爬100页等待多少秒,等等。即便这样也不一定适用所有情况。我在纠结要不要在config.json文件中加参数,让使用者更具自己的情况配置等待策略。纠结的原因是这样确实更灵活,缺点是参数会越来越多,增加使用成本。
长微博目前的策略是先获取其在微博列表中的微博内容(此时是不完整的微博,微博内容太长,只展示了一部分),然后再尝试获取这条微博的详情页,如果成功,就用新获取的完整微博替换之前不完整的。如果获取失败(比如被限制了),就只用原来不完整的内容作为微博内容,毕竟不完整比没有好一点。
微博条数只有在爬全部微博(原创+转发)时才有意思。一页微博有10条,但这10条即可以是原创也可以是转发,如果只爬原创,这一页微博中到底有多少条是原创不好说,只能计数统计。这样在爬原创时,就有两类微博数,筛选过的能够获得的微博数和原创微博数,还有每页微博不为10条的情况,确实无法通过数量精确判断是否被限制。
关于下载
主要是视频下载,以前出现过大小只有1k的情况,当时出现这个问题的情况已经修复了。现在如果还有这种情况,可能是还没有发现的问题。建议很好,我下一步打算图片和视频下载也和写结果文件一样,爬取一定的页数就写入,这样比集中写入确实要好。还有一类下载的情况,weibo_id会写入not_downloaded.txt,这一类可以统一下载。因为知道weibo_id,就可以最多视频url。再考虑有没有必要写一个专门的项目,专门下载not_downloaded.txt中微博的视频文件。
关于断点续写
非常好的建议。个人认为,如果一个微博中途在某页被限制了。这种情况,记录页数非常有必要,可以通过restart_page继续爬。也可以记录end_date,因为在被限制后,目标微博账号可能还会发新微博,导致出错页后移。比如上次程序在第10页被限制了,再次再爬时,现在微博账号可能又发了些新微博,以前出错页的微博被新微博挤到后面了。这种情况需要解决两个问题,如何爬新微博,如何爬上次没有获取的微博。当然,如果两次爬取间隔非常短。比如第一次被限制后,过一会马上继续爬。这种情况发生新微博挤旧微博的概率很小,可以直接通过restart_page继续爬。
上面的建议非常好,看得出来,是经过认真思考提出来的。上面提到的建议,我认为有必要修改和添加的功能,会陆续加上,时间大致在春节之后。如果还有其它建议,欢迎反馈:smile:
再次感谢建议,非常认真仔细,有深度。上面我的思考由于时间仓促,不一定全面和正确,如果有错误欢迎指正,还有其它建议也欢迎反馈
from weibo-crawler.
Related Issues (20)
- 你好,我想下载所有微博正文,该怎么设置呢? HOT 3
- docker镜像 HOT 1
- 某行是一条独立换行内容的时候这个换行最终读取到MYSQL会被省略掉
- 微博内容(Weibo.text)最大长度报错问题 HOT 1
- 求助-爬微博进度100%,但是数量明显跟实际数量不一致有可能是何原因? HOT 3
- 如何爬取微博正文时展开全文爬取到完整内容 HOT 1
- COOKIES没有失效,但是Progress: 19%就结束了,可能是什么原因? HOT 3
- 当单个微博图片超过9张时,weibo-crawler只能下载9张 HOT 2
- 爬取的图片名字里有一个奇怪的T HOT 1
- “检测cookie是否有效”的功能失效 HOT 2
- 怎么爬取用户的ip归属地呢? HOT 7
- 请问下载的评论在哪 HOT 1
- 转发和评论好像出现了奇怪的问题 HOT 1
- csv中抓取的用户头像链接有时候会失效怎么解决? HOT 1
- sqlite储存数据非常大 HOT 1
- Docker 定时跑时,图片和视频是否是反复下载?
- since_date 格式不正确,请确认配置是否正确 HOT 6
- 被ban了 HOT 1
- 无法爬取地区、学校、生日相关信息 HOT 3
- 微博爬取截止时间 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from weibo-crawler.