# Python 网络爬虫专题分享
## 一、什么是网络爬虫
### 概念
> 网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
### 功能模块组成
1. 控制器:启动进程/线程对相关URL发起网络请求。
2. 解析器:下载网页、对网页文本进行过滤解析
3. 数据持久化:将解析得到爬虫数据保存。
### 一个简单的爬虫
```python
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen('http://www.pythonscraping.com/pages/page1.html')
bs = BeautifulSoup(html.read(), 'html.parser')
print(bs.h1)
```
## 二、Python网络爬虫常用库
### 网络请求
1. urlopen:主要用于发送get请求,获取资源
2. requests:可发送POST等请求,用于表单处理等
### HMTL解析
BeautifulSoup4
### JavaScript解析
selenium
### 图像识别与文字处理
1. numpy
2. Pillow
3. Tesseract
## 三、爬虫的方式
1. 直接爬取HTML解析
2. 抓取JavaScript解析
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(
executable_path='drivers/chromedriver',
options=chrome_options)
driver.get('http://pythonscraping.com/pages/javascript/ajaxDemo.html')
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'loadedButton')))
finally:
print(driver.find_element_by_id('content').text)
driver.close()
```
3. 利用API抓取
## 四、数据存储
1. 媒体文件:如jpg、mp3、mp4等媒体文件
2. 数据存储到txt、csv等文本文件
可使用python等csv库等
3. 数据存储到MySQL数据库
## 五、爬虫的延伸
### 表单处理及登陆验证
1. 使用requests模拟表单提交
```python
import requests
params = {'firstname': 'Ryan', 'lastname': 'Mitchell'}
r = requests.post("http://pythonscraping.com/pages/processing.php", data=params)
print(r.text)
```
2. 验证码处理
借助Tesseract、Pillow等OCR库识别验证码。
### Python爬虫框架Scrapy
#### 框架简介
> Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。
#### 安装方式
1. Anaconda安装
```shell
conda install -c conda-forge scrapy
```
2. pip安装
```powershell
pip3 install scrapy
```
#### 创建项目
```
1. scrapy startproject 项目名称
```
```
2. cd project_name(进入项目目录)
```
```
3. scrapy genspider 应用名称 爬取网页的起始url
(例如:scrapy genspider douban_book_spider https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start=0&type=T>)
执行完毕后,会在项目的spiders中生成一个应用名的py爬虫文件:应用名.py
```
#### 项目结构解析
```
project_name/
scrapy.cfg #项目的主配置信息。
project_name/
__init__.py
items.py #设置数据存储模板,用于结构化数据,如:Django的Model
pipelines.py #数据持久化处理
settings.py #配置文件,如:递归的层数、并发数,延迟下载等
spiders/ #爬虫目录,如:创建文件,编写爬虫解析规则
__init__.py
```
## 六、爬虫实例
#### 基于Python原生库的豆瓣图书爬虫
详见爬虫脚本代码:[/douban_book_spider/DoubanSpider.py](https://github.com/uniquetree/python-study-spiders/tree/master/douban_book_spider/DoubanSpider.py)
#### 基于爬虫框架Scrapy的豆瓣图书爬虫
详见项目:[simple_scrapy](https://github.com/uniquetree/python-study-spiders/tree/master/simple_scrapy/simple_scrapy/spiders/douban_book_spider.py)
## 七、项目Github地址
[https://github.com/uniquetree/python-study-spiders](https://github.com/uniquetree/python-study-spiders)
## 八、推荐书籍
> 《Python网络爬虫权威指南》
没有合适的资源?快使用搜索试试~ 我知道了~
Python网络爬虫学习项目库。.zip
共31个文件
py:13个
xml:4个
ipynb:3个
需积分: 0 0 下载量 55 浏览量
2023-12-23
17:55:08
上传
评论
收藏 755KB ZIP 举报
温馨提示
Python爬虫源码大放送:抓取数据,轻松搞定! 想轻松抓取网站数据,却苦于技术门槛太高?别担心,这些源码将助你轻松搞定数据抓取,让你成为网络世界的“数据侠盗”。 它们还具有超强的实用价值。无论你是想要分析竞品数据、收集行业情报,还是想要偷窥某个女神的社交媒体动态,这些源码都能满足你的需求。 是时候打破技术壁垒,开启数据抓取的新篇章了
资源推荐
资源详情
资源评论
收起资源包目录
Python网络爬虫学习项目库。.zip (31个子文件)
ergsdfgsdgsdgsdfgdsfdfghfhfdgh42354353esdfsdfgsdfgdfg
Python网络爬虫分享会.docx 582KB
basic_spider
__init__.py 0B
api_scrapy.ipynb 21KB
saveFile.py 253B
js_scrapy.ipynb 8KB
simple_scrapy.ipynb 2KB
LICENSE 11KB
Scrapy处理流程图.pdf 38KB
.idea
vcs.xml 180B
workspace.xml 28KB
misc.xml 311B
modules.xml 292B
python-study-spiders.iml 454B
simple_scrapy
scrapy.cfg 269B
simple_scrapy
__init__.py 0B
pipelines.py 1KB
main.py 119B
book_list.txt 28KB
spiders
__init__.py 161B
douban_book_spider.py 3KB
items.py 384B
settings.py 3KB
book_list.xlsx 18KB
middlewares.py 4KB
douban_book_spider
__init__.py 0B
DoubanSpider.py 4KB
spider1.py 2KB
book_list.xlsx 18KB
.gitignore 1KB
README.md 4KB
Python网络爬虫.xmind 87KB
共 31 条
- 1
资源评论
极致人生-010
- 粉丝: 3203
- 资源: 3077
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab 概率神经网络的分类预测-基于PNN的变压器故障诊断源代码+详细教程
- IMG_2779.PNG
- 基于matlab Elman神经网络的数据预测-电力负荷预测模型研究源代码+详细教程
- 架构师软考知识点整理2
- 基于matlab SOM神经网络的数据分类-柴油机故障诊断源代码+详细教程
- 2023.cpp
- 基于matlab 自组织竞争网络在模式分类中的应用-患者癌症发病预测源代码+详细教程
- 在线考试系统 JAVA+Spring+SpringMVC+MyBatis
- 毕业设计基于Python卷积神经网络CNN的图像分类系统源码+模型+说明文档+全部数据资料.zip
- matlab 基于SVM的手写字体识别源代码+详细教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功