forked from dataabc/weiboSpider
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Mainly based on [1]. 1. <br> are replaced by blank lines. 2. Add lexers [2] after code fence. 3. Add one space after ordered list numbers. [1] https://github.com/DavidAnson/markdownlint/blob/v0.23.1/doc/Rules.md [2] https://pygments.org/docs/lexers/
- Loading branch information
Showing
13 changed files
with
341 additions
and
173 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,9 +7,10 @@ assignees: '' | |
|
||
--- | ||
|
||
- 问:请说明需要什么新功能。<br> | ||
答: | ||
- 问:请说明需要什么新功能。 | ||
|
||
- 问:请说明添加该功能的意义。(非必填)<br> | ||
答: | ||
|
||
- 问:请说明添加该功能的意义。(非必填) | ||
|
||
答: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,38 @@ | ||
# 为本项目做贡献 | ||
|
||
本项目使用**Python3**编写,感谢大家对项目的支持,也欢迎大家为开源项目做贡献。鉴于大家拥有不同的技能、经验、认知、时间等,每个人可以根据自身的情况为本项目贡献力量。我们不会因为贡献者写的代码少或者提的建议不好而失去感恩之心,每一个乐于奉献的人都值得并且应该被尊重。所以,如果您觉得自己的代码或建议不好,而不好意思去贡献,这样可能就让本项目失去了一次变得更好的机会。所以,如果您有好的想法、建议,或者发现了bug,欢迎通过issue提出来,这也是一种贡献方式。如果您想要为本项目贡献代码,我们也非常欢迎。最开始您可以通过pull request方式提交代码,如果我们发现您的代码质量非常高,或者非常有想法等,我们会邀请您请成为本项目的协作者([Collaborator](https://help.github.com/cn/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository#collaborator-access-on-a-repository-owned-by-a-user-account)),这样您就可以直接向本项目提交代码了。在您贡献代码之前,请先阅读下面的说明,这会让您更好的贡献代码。 | ||
|
||
## 贡献代码之前 | ||
|
||
如果要开发新功能或者其它需要大量编写代码的修改,在开发之前最好发Issue说明一下。比如,“我准备开发xx新功能”或者“我想修改xx功能”之类的。因为要开发的功能不一定适合本项目,所以提前说明讨论,判断新功能或修改是否有必要。否则,费时费力写了很多代码,结果最后没有被采纳,可能会做一些无用功。 | ||
|
||
## Python风格规范(建议Python新手阅读) | ||
|
||
参考[Python风格规范](https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/) | ||
或者[Python风格规范](https://github.com/zh-google-styleguide/zh-google-styleguide/blob/master/google-python-styleguide/python_style_rules.rst) | ||
或者[Python风格规范](https://github.com/zh-google-styleguide/zh-google-styleguide/blob/master/google-python-styleguide/python_style_rules.rst), | ||
二者内容是一样的。 | ||
|
||
## git提交规范 | ||
|
||
参考[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) | ||
或者[Git提交规范](https://zhuanlan.zhihu.com/p/67804026),commit描述中文英文皆可,只要符合规范就好。 | ||
|
||
## git提交建议(可选) | ||
|
||
本建议是可选的,如果你觉得不合理,可以按自己的方式编写代码。建议每次提交都是代码改动较少的提交,如果新功能需要大量修改代码,建议将新功能分成几个小模块,每个模块提交一次。原因是这样更容易管理代码。比如,一个新功能包含几个模块。其中大部分模块都写的很好,但是有一个模块有bug。分模块提交只需要单独处理出问题的模块,其他模块不受影响。 | ||
|
||
## Python之linter | ||
|
||
本项目使用flake8。 | ||
|
||
## Python之formatter | ||
|
||
本项目使用yapf。 | ||
|
||
## 引号的使用 | ||
|
||
代码中**建议使用单引号**,只有在特殊情况下使用双引号,如类、方法、函数等开头的注释使用6个双引号包裹(注释左边三个双引号,右边三个双引号),或者字符串中中已经包含单引号了,则要用双引号包裹。 | ||
|
||
## 避免过多的模块依赖 | ||
|
||
除非有必要,尽量少使用非内置的模块,因为会增加用户的安装成本,当然如果该模块能够为本项目或用户带来很多便利,则可以使用。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,6 +16,7 @@ | |
- **SQLite数据库**(可选) | ||
|
||
同时支持下载微博中的图片和视频,具体的可下载文件如下: | ||
|
||
- **原创**微博中的原始**图片**(可选) | ||
- **转发**微博中的原始**图片**(可选) | ||
- **原创**微博中的**视频**(可选) | ||
|
@@ -25,6 +26,8 @@ | |
|
||
## 内容列表 | ||
|
||
[TOC] | ||
|
||
- [Weibo Spider](#weibo-spider) | ||
- [内容列表](#内容列表) | ||
- [获取到的字段](#获取到的字段) | ||
|
@@ -52,7 +55,7 @@ | |
|
||
本部分为爬取到的字段信息说明,为了与[免cookie版](https://github.com/dataabc/weibo-crawler)区分,下面将两者爬取到的信息都列出来。如果是免cookie版所特有的信息,会有免cookie标注,没有标注的为二者共有的信息。 | ||
|
||
**用户信息** | ||
### 用户信息 | ||
|
||
- 用户id:微博用户id,如"1669879400",其实这个字段本来就是已知字段 | ||
- 昵称:用户昵称,如"Dear-迪丽热巴" | ||
|
@@ -76,9 +79,7 @@ | |
- 认证类型(免cookie版):用户认证类型,如个人认证、企业认证、政府认证等 | ||
- 认证信息:为认证用户特有,用户信息栏显示的认证信息 | ||
|
||
*** | ||
|
||
**微博信息** | ||
### 微博信息 | ||
|
||
- 微博id:微博唯一标志 | ||
- 微博内容:微博正文 | ||
|
@@ -153,13 +154,17 @@ $ python3 -m weibo_spider --config_path="config.json" | |
``` | ||
|
||
如果你想指定文件(csv、txt、json、图片、视频)保存路径,可以通过output_dir参数设定。假如你想把文件保存到/home/weibo/目录,可以运行如下命令: | ||
``` | ||
|
||
```bash | ||
$ python3 -m weibo_spider --output_dir="/home/weibo/" | ||
``` | ||
|
||
如果你想通过命令行输入user_id,可以使用参数u,可以输入一个或多个user_id,每个user_id以英文逗号分开,如果这些user_id中有重复的user_id,程序会自动去重。命令行如下: | ||
``` | ||
|
||
```bash | ||
$ python3 -m weibo_spider --u="1669879400,1223178222" | ||
``` | ||
|
||
程序会获取user_id分别为1669879400和1223178222的微博用户的微博,后面会讲[如何获取user_id](#如何获取user_id)。该方式的所有user_id使用config.json中的since_date和end_date设置,通过修改它们的值可以控制爬取的时间范围。若config.json中的user_id_list是文件路径,每个命令行中的user_id都会自动保存到该文件内,且自动更新since_date;若不是路径,user_id会保存在当前目录的user_id_list.txt内,且自动更新since_date,若当前目录下不存在user_id_list.txt,程序会自动创建它。 | ||
|
||
## 个性化定制程序(可选) | ||
|
@@ -192,6 +197,7 @@ $ python3 -m weibo_spider --u="1669879400,1223178222" | |
- wb.user['weibo_num']:微博数; | ||
- wb.user['following']:关注数; | ||
- wb.user['followers']:粉丝数; | ||
|
||
</details> | ||
|
||
**wb.weibo**:除不包含上述信息外,wb.weibo包含爬取到的所有微博信息,如**微博id**、**微博正文**、**原始图片url**、**发布位置**、**发布时间**、**发布工具**、**点赞数**、**转发数**、**评论数**等。如果爬的是全部微博(原创+转发),除上述信息之外,还包含被**转发微博原始图片url**、**是否为原创微博**等。wb.weibo是一个列表,包含了爬取的所有微博信息。wb.weibo[0]为爬取的第一条微博,wb.weibo[1]为爬取的第二条微博,以此类推。当filter=1时,wb.weibo[0]为爬取的第一条**原创**微博,以此类推。wb.weibo[0]['id']为第一条微博的id,wb.weibo[0]['content']为第一条微博的正文,wb.weibo[0]['publish_time']为第一条微博的发布时间,还有其它很多信息不在赘述,大家可以点击下面的"详情"查看具体用法。 | ||
|
@@ -231,9 +237,11 @@ $ python3 -m weibo_spider --u="1669879400,1223178222" | |
## 常见问题 | ||
|
||
如果运行程序的过程中出现错误,可以查看[常见问题](https://github.com/dataabc/weiboSpider/blob/master/docs/FAQ.md)页面,里面包含了最常见的问题及解决方法。如果出现的错误不在常见问题里,您可以通过[发issue](https://github.com/dataabc/weiboSpider/issues/new/choose)寻求帮助,我们会很乐意为您解答。 | ||
|
||
## 学术研究 | ||
|
||
本项目通过获取微博数据,为写论文、做研究等非商业项目提供所需数据。[学术研究文档](https://github.com/dataabc/weiboSpider/blob/master/docs/academic.md)是一些在论文或研究等方面使用过本程序的项目,这些项目展示已征得所有者同意。在一些涉及隐私的描述上,已与所有者做了沟通,描述中只介绍所有者允许展示的部分。如果部分信息所有者之前同意展示并且已经写在了文档中,现在又不想展示了,可以通过邮件([email protected])或issue的方式告诉我,我会删除相关信息。同时,也欢迎使用本项目写论文或做其它学术研究的朋友,将自己的研究成果展示在[学术研究文档](https://github.com/dataabc/weiboSpider/blob/master/docs/academic.md)里,这完全是自愿的。 | ||
|
||
## 相关项目 | ||
|
||
- [weibo-crawler](https://github.com/dataabc/weibo-crawler) - 功能和本项目完全一样,可以不添加cookie,获取的微博属性更多; | ||
|
@@ -249,6 +257,5 @@ $ python3 -m weibo_spider --u="1669879400,1223178222" | |
|
||
## 注意事项 | ||
|
||
1.user_id不能为爬虫微博的user_id。因为要爬微博信息,必须先登录到某个微博账号,此账号我们姑且称为爬虫微博。爬虫微博访问自己的页面和访问其他用户的页面,得到的网页格式不同,所以无法爬取自己的微博信息;如果想要爬取爬虫微博内容,可以参考[获取自身微博信息](https://github.com/dataabc/weiboSpider/issues/113); | ||
|
||
2.cookie有期限限制,大约三个月。若提示cookie错误或已过期,需要重新更新cookie。 | ||
1. user_id不能为爬虫微博的user_id。因为要爬微博信息,必须先登录到某个微博账号,此账号我们姑且称为爬虫微博。爬虫微博访问自己的页面和访问其他用户的页面,得到的网页格式不同,所以无法爬取自己的微博信息;如果想要爬取爬虫微博内容,可以参考[获取自身微博信息](https://github.com/dataabc/weiboSpider/issues/113); | ||
2. cookie有期限限制,大约三个月。若提示cookie错误或已过期,需要重新更新cookie。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,45 @@ | ||
## 常见问题 | ||
# 常见问题 | ||
|
||
## 1. 程序运行出错,错误提示中包含“ImportError: cannot import name 'config_util' from '__main__'”,如何解决? | ||
|
||
### 1.程序运行出错,错误提示中包含“ImportError: cannot import name 'config_util' from '__main__'”,如何解决? | ||
出现这种错误,说明使用者很可能是直接运行的.py文件,程序正确的运行方式是在weiboSpider目录下,运行如下命令: | ||
``` | ||
|
||
```bash | ||
python3 -m weibo_spider | ||
``` | ||
|
||
### 2.程序运行出错,错误提示中包含“'NoneType' object”字样,如何解决? | ||
## 2. 程序运行出错,错误提示中包含“'NoneType' object”字样,如何解决? | ||
|
||
这是最常见的问题之一。出错原因是爬取速度太快,被暂时限制了,限制可能包含爬虫账号限制和ip限制。一般情况下,一段时间后限制会自动解除。可通过降低爬取速度避免被限制,具体修改config.json文件中的如下代码: | ||
``` | ||
|
||
```json | ||
"random_wait_pages": [1, 5], | ||
"random_wait_seconds": [6, 10], | ||
"global_wait": [[1000, 3600], [500, 2000]], | ||
``` | ||
|
||
前两行的意思是每爬取1到5页,随机等待6到10秒。可以通过加快暂停频率(减小random_wait_pages内的值)或增加等待时间(加大random_wait_seconds内的值)避免被限制。最后一行的意思是获取1000页微博,一次性等待3600秒;之后获取500页微博一次性等待2000秒。默认只有两个global_wait配置([1000, 3600]和[500, 2000]),可以添加更多个,也可以自定义。当配置使用完,如默认配置在获取1500(1000+500)页微博后就用完了,之后程序会从第一个配置开始循环使用(获取第1501页到2500页等待3600秒,获取第2501页到第3000页等待2000秒,以此类推)。 | ||
|
||
### 3.如何获取微博评论? | ||
## 3. 如何获取微博评论? | ||
|
||
因为限制,只能获取一部分评论,无法获取全部,因此暂时没有添加获取评论功能的计划。 | ||
|
||
### 4.有的长微博正文只能获取一部分内容,如何解决? | ||
## 4. 有的长微博正文只能获取一部分内容,如何解决? | ||
|
||
程序是可以获取长微博全文的。程序首先在微博列表页获取微博,如果发现长微博(正文没有显示完整,以“全文”代替部分内容的微博),会先保存这个不全的内容,然后去该长微博的详情页尝试获取全文,如果获取成功,获取的内容就是微博文本;如果获取失败,等待若干秒重新获取;如果连续尝试5次都失败,就用上面不全的内容代替。这样做的原因是避免因部分长微博获取失败而卡住。如果想尝试更多次,可以修改comment_parser.py文件get_long_weibo方法内for循环的次数。 | ||
|
||
### 5.如何按指定关键词获取微博? | ||
## 5. 如何按指定关键词获取微博? | ||
|
||
请使用[weibo-search](https://github.com/dataabc/weibo-search)。该程序可以连续获取一个或多个微博关键词搜索结果,并将结果写入文件(可选)、数据库(可选)等。所谓微博关键词搜索即:搜索正文中包含指定关键词的微博,可以指定搜索的时间范围。对于非常热门的关键词,一天的时间范围,可以获得1000万以上的搜索结果,N天的时间范围就可以获得1000万 X N搜索结果。对于大多数关键词,一天产生的相应微博数量应该在1000万条以下,因此可以说该程序可以获得大部分关键词的全部或近似全部的搜索结果。而且该程序可以获得搜索结果的所有信息,本程序获得的微博信息该程序都能获得。 | ||
|
||
### 6.如何获取微博用户关注列表中用户的user_id? | ||
## 6. 如何获取微博用户关注列表中用户的user_id? | ||
|
||
请使用[weibo-follow](https://github.com/dataabc/weibo-follow)。该程序可以利用一个user_id,获取该user_id微博用户关注人的user_id,一个user_id最多可以获得200个user_id,并写入user_id_list.txt文件。程序支持读文件,利用这200个user_id,可以获得最多200X200=40000个user_id。再利用这40000个user_id可以得到40000X200=8000000个user_id,如此反复,以此类推,可以获得大量user_id。本项目也支持读文件,将上述程序的结果文件user_id_list.txt路径赋值给本项目config.json的user_id_list参数,就可以获得这些user_id用户所发布的大量微博。 | ||
|
||
### 7.如何获取自己的微博? | ||
## 7. 如何获取自己的微博? | ||
|
||
修改page_parser.py中__init__方法,将self.url修改为: | ||
``` | ||
|
||
```python | ||
self.url = "https://weibo.cn/%s/profile?page=%d" % (user_uri, page) | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
## 学术研究 | ||
# 学术研究 | ||
|
||
本项目通过获取微博数据,为写论文、做研究等非商业项目提供所需数据。下面是一些在论文或研究等方面使用过本程序的项目。在一些涉及隐私的描述上,已与研究者做了沟通,在下面的描述中只介绍研究者 | ||
允许展示的部分。如果部分信息研究者之前同意展示并且已经写在了本文档中,现在又不想展示了,可以通过邮件([email protected])或issue的方式告诉我,我会删除相关信息。同时,使用本项目写论文或做其它学术研究的朋友,如果想把自己的研究成果展示在下面,也可以通过邮件或issue的方式告诉我。 | ||
|
||
*** | ||
|
||
英国伦敦国王学院[Mak-LokGay](https://github.com/Mak-LokGay)的[毕业论文](https://github.com/Mak-LokGay/KCL_Dissertation) | ||
- 英国伦敦国王学院[Mak-LokGay](https://github.com/Mak-LokGay)的[毕业论文](https://github.com/Mak-LokGay/KCL_Dissertation) |
Oops, something went wrong.