# 爬虫练习
**Repository Path**: pocky_gitee/crawler
## Basic Information
- **Project Name**: 爬虫练习
- **Description**: 个人工作、生活、学习用到的爬虫会写在这里,目前只上传了一部分。通过爬虫锻炼数据处理能力,增进对反爬技术的了解,遵守爬虫协议。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-02-08
- **Last Updated**: 2022-02-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Python
## README
[TOC]
# 仓库代码结构说明
以下爬虫仅供技术学习使用
| | |
| ---------------------- | -------------------------------------------------- |
| crawler/6mh7_com | 爬取`http://m.6mh7.com`网站漫画图片的代码 |
| crawler/cocomanhua_com | 爬取`https://www.cocomanhua.com`网站漫画图片的代码 |
| crawler/fkxs_net | 爬取`https://m.fkxs.net`网站的小说 |
| crawler/stats_gov_cn | 爬取`http://www.stats.gov.cn`地理信息 |
# crawler/6mh7_com中的代码
## 运行方式
```
python3 6mh7_com/requests_core.py
```
## 爬取关键
**爬取结构**
运行代码,会通过目录页获取每一章节页面的地址,进入每一章节页面的地址,可以获得章节下每张图片的下载地址,
**解决拿不到章节下每张图片顺序及图片下载路径的问题**
但是每一章节图片的下载地址不是网页初次加载就会有的,而是网页加载完成之后,js修改页面中的标签内容,把图片的地址加进去,所以直接请求页面路径是拿不到图片地址的,选择直接运行这段js,会获得图片的路径,js结果是图片按照先后顺序在一个list里面,遍历这个list并拼接图片下载路径前缀,就可以按顺序的到当前章节中每张图片的下载路径。
**解决访问第一级页面的时候只能拿到部分章节的地址,需要点击“加载更多”才能获得全部**
点击”加载更多”会请求接口,得到的是一个jsonArray,里面是除了已经显示的章节列表之外的全部章节列表,然后页面会通过js改变页面内容。
由于接口返回的内容已经是固定的,所以我们直接把接口返回的结果拿出来就行了,组成每一章节页面的访问路径,粘贴到文件里,读取文件,然后遍历章节访问路径,和通过第一级页面获得页面章节页面访问路径放到一起,形成了完整的章节页面列表。
用来存放的文件名为new.txt
## 爬取流程
1.访问哪里:访问目录页面,访问接口,目的是获得章节页面路径组成的list
2.如何获得下一级:从标签和接口获取
2.衔接:遍历章节页面路径组成的list
章节列表的内容可以存在文件里面,遍历的时候从文件里面读取,这样程序断了,这要打印日志,就可以知道从什么位置断的,以及可以从指定位置开始继续爬取。
3.访问哪里:请求章节页面,目的是获取该章节下每个图片的下载路径
请求章节页面之后,创建该章节对应的文件夹,用于存放该章节下的图片
4.如何获得下一级:每个图片的下载路径在初次请求的页面里面是没有的,是调用js,形成新的标签,这个标签会被添加到页面中
这段写标签的js调用了另一段js函数,这段函数的返回值是一个list(与阅读顺序一致的图片路径list)
要获得这段js函数的代码,需要从页面js里面提取`