Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Python-100-Days
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huangkq
Python-100-Days
Commits
d4d159d1
Commit
d4d159d1
authored
Jun 11, 2018
by
jackfrued
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新了部分爬虫阶段的文档
parent
1326b2d0
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
7 deletions
+51
-7
01.网络爬虫和相关工具.md
Day66-75/01.网络爬虫和相关工具.md
+0
-0
02.数据采集和解析.md
Day66-75/02.数据采集和解析.md
+50
-6
03.存储数据.md
Day66-75/03.存储数据.md
+1
-1
No files found.
Day66-75/01.网络爬虫和相关工具.md
View file @
d4d159d1
This diff is collapsed.
Click to expand it.
Day66-75/02.数据采集和解析.md
View file @
d4d159d1
## 数据采集和解析
## 数据采集和解析
通过
上一个章节,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,至此我们可以对爬虫开发需要做的工作以及相关的技术做一个简单的汇总,可能有些库我们之前并没有使用过,不过别担心,这些内容我们都会讲到的
。
通过
[
《网络爬虫和相关工具》
](
./01.网络爬虫和相关工具.md
)
一文,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,至此我们可以对爬虫开发需要做的工作以及相关的技术做一个简单的汇总,这其中可能会有一些我们之前没有使用过的第三方库,不过别担心,这些内容我们稍后都会一一讲到
。
1.
下载数据 - urllib / requests / aiohttp。
1.
下载数据 - urllib / requests / aiohttp。
2.
解析数据 - re / lxml / beautifulsoup4(bs4)/ pyquery。
2.
解析数据 - re / lxml / beautifulsoup4(bs4)/ pyquery。
3.
缓存和持久化 - pymysql /
redis / sqlalchemy / peewee
/ pymongo。
3.
缓存和持久化 - pymysql /
sqlalchemy / peewee/ redis
/ pymongo。
4.
生成
摘要
- hashlib。
4.
生成
数字签名
- hashlib。
5.
序列化和压缩 - pickle / json / zlib。
5.
序列化和压缩 - pickle / json / zlib。
6.
调度器 - 进程
/ 线程 / 协程
。
6.
调度器 - 进程
(multiprocessing) / 线程(threading) / 协程(coroutine)
。
### HTML页面分析
### HTML页面分析
...
@@ -48,16 +48,44 @@
...
@@ -48,16 +48,44 @@
</html>
</html>
```
```
如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是
:
用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过“查看网页源代码”的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解网页更多的信息。
如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过“查看网页源代码”的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解网页更多的信息。
#### 使用requests获取页面
#### 使用requests获取页面
1.
GET请求和POST请求。
1.
GET请求和POST请求。
```
Python
```
2. URL参数和请求头。
2. URL参数和请求头。
```Python
```
3. 复杂的POST请求(文件上传)。
3. 复杂的POST请求(文件上传)。
```Python
```
4. 操作Cookie。
4. 操作Cookie。
```Python
```
5. 设置代理服务器。
5. 设置代理服务器。
6.
超时设置。
```Python
```
> 说明:关于requests的详细用法可以参考它的[官方文档](http://docs.python-requests.org/zh_CN/latest/user/quickstart.html)。
> 说明:关于requests的详细用法可以参考它的[官方文档](http://docs.python-requests.org/zh_CN/latest/user/quickstart.html)。
...
@@ -74,8 +102,18 @@
...
@@ -74,8 +102,18 @@
> 说明:Beautiful的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。
> 说明:Beautiful的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。
#### 使用正则表达式
如果你对正则表达式没有任何的概念,那么推荐先阅读[《正则表达式30分钟入门教程》](),然后再阅读我们之前讲解在Python中如何使用正则表达式一文。
#### 使用XPath和Lxml
#### BeautifulSoup的使用
#### BeautifulSoup的使用
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。
1. 遍历文档树
1. 遍历文档树
- 获取标签
- 获取标签
- 获取标签属性
- 获取标签属性
...
@@ -89,6 +127,12 @@
...
@@ -89,6 +127,12 @@
> 说明:更多内容可以参考BeautifulSoup的[官方文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)。
> 说明:更多内容可以参考BeautifulSoup的[官方文档](https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html)。
#### PyQuery的使用
pyquery相当于jQuery的Python实现,可以用于解析HTML网页。
### 实例 - 获取知乎发现上的问题链接
### 实例 - 获取知乎发现上的问题链接
```
Python
```
Python
...
...
Day66-75/03.存储数据.md
View file @
d4d159d1
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
### 数据缓存
### 数据缓存
通过
前面章节的内容
,我们已经知道了如何从指定的页面中抓取数据,以及如何保存抓取的结果,但是我们没有考虑过这么一种情况,就是我们可能需要从已经抓取过的页面中提取出更多的数据,重新去下载这些页面对于规模不大的网站倒是问题也不大,但是如果能够把这些页面缓存起来,对应用的性能会有明显的改善。
通过
[
《网络数据采集和解析》
](
./02.数据采集和解析.md
)
一文
,我们已经知道了如何从指定的页面中抓取数据,以及如何保存抓取的结果,但是我们没有考虑过这么一种情况,就是我们可能需要从已经抓取过的页面中提取出更多的数据,重新去下载这些页面对于规模不大的网站倒是问题也不大,但是如果能够把这些页面缓存起来,对应用的性能会有明显的改善。
### 使用NoSQL
### 使用NoSQL
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment