IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 数据分析利器Python——爬虫(含爬取过程、Scrapy框架介绍) -> 正文阅读

[人工智能]数据分析利器Python——爬虫(含爬取过程、Scrapy框架介绍)

一、基础知识

1、定义

是自动获取互联网信息的程序,用来对互联网信息进行分析、开发产品。

2、基本架构

URL管理模块:对计划爬取或已经爬取的URL进行管理(已爬取不再爬取,未爬取则爬取,已失效网站检测等)
网页下载模块:将URL管理模块中指定的URL进行访问下载
网页解析模块:解析网页下载模块中的URL,处理或保存数据;若解析到需要继续爬取的URL,则返回URL管理模块继续循环。

上图介绍了爬虫的流程,是学习本节的基础。

二、URL管理模块

防止重复爬取和循环指向
功能:

  • 可以添加新的URL
  • 管理已经爬取和未爬取的URL
  • 获取待爬取的URL

实现方式:

  • Python的set集合数据结构(使用了集合中数据的唯一性,适用于数据简单情况)
  • 数据库中的数据表(创建的时候打标签,标记flag位)

三、网页下载模块

将URL对应的网页下载到本地或读入内存(字符串)

Python中的requests模块

request.get(url) 返回request对象,通过request对象的方法获取想要的信息
属性:
status_codes:状态码

常见的状态码:

  • 200:请求成功
    404:请求的资源不存在
    500:内部服务器错误

headers:网页的header信息
encoding:网页编码
text:请求返回的文本信息
content: 以字节形式的非文本信息(图片等)

# 使用jupyter notebook
import requests
url = "https://www.baidu.com"
r_obj = requests.get(url)
r_obj.status_code # 返回状态码
r_obj.encoding = 'utf-8' # 若返回text时出现乱码则先将编码设置为utf-8格式再返回文本
r_obj.text

四、网页解析模块

从已下载网页中解析所需内容

实现方式:

  • 字符串匹配
  • html.parser:Python自带的解析html的工具
  • BeautifulSoup:结构化的网页解析

1、结构化网页解析

DOM(Document Object Model),文档对象模型

2、BeautifulSoup使用步骤

2.1 创建BeautifulSoup对象

BeautifulSoup(
url,
html_parser 指定解析器
encoding 指定编码格式(和网页编码格式一致)
)

2.2、查询节点

find(),找到第一个满足条件的节点
find_all(),找到所有满足条件的节点

方法:按照节点类型或属性查找(需要了解前端开发的部分知识)

  • 按照类型查找:find_all(‘a’) 找到所有的链接【a标签代表链接】
  • 按照属性查找:find_all(‘a’, href=‘test.html’)找到href='test.html的链接

2.3、获取节点信息

查找节点返回的是Tag对象,获取Tag对象信息
【因为一个标签会有很多属性,所以返回的Tag对象是字典类型】

Tag对象属性:
  • Tag.name:节点标签名称,‘a’
  • Tag.attrs:返回节点的属性s,字典类型
  • Tag.text:获取节点文本
间接获取节点信息

children:只返回“孩子节点”
desendants:返回所有子孙节点
next_siblings:返回下一个“同辈节点”
previous_siblings:返回上一个“同辈节点”
parent:返回“父亲节点”
举个栗子

# 使用jupyter notebook
import requests
from bs4 import BeautifulSoup
url = "https://www.baidu.com"
r_obj = requests.get(url)
bs = BeautifulSoup(r_obj.content,
					'lxml' # 解析器
					from_encoding='utf-8'# 指定编码
					)
bs.find('title') # 找title标签
link_tag = bs.find('a') # 找到第一个链接<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>

3、Scrapy框架

3.1、简介

开源的爬虫框架,用于爬取web站点并从页面中提取结构化数据,可用于数据挖掘,检测,自动化测试。

高级特性

  • 内置数据抽取CSS/XPath/re
  • 交互式控制台用于调试
  • 结果输出的格式控制,json、csv、xml等
  • 自动处理编码
  • 可自定义扩展

爬取步骤如图

3.2、安装

pip install scrapy
检测是否安装成功:scrapy bench
使用步骤:

  1. 创建工程

  2. 定义Item,构造爬取的对象(可选)

  3. 编写爬虫主体
    - 使用BeautifulSoup解析网页内容
    - 调用自制的Item

  4. 编写配置和管道,用于处理爬虫结果(可选)

  5. 执行爬虫

# (1)创建工程scrapy startproject 名字
scrapy startproject tutorial
# (2)编写Spyder
cd tutorial
scrapy genspider aqi_spider http://www.pm25.in/
 # aqi_spider为自定义的spider名称

使用Pycharm打开创建的工程并打开对应的Spyder文件,编辑想要输出的代码

scrapy crawl api_spider 
# 运行Spyder文件,api_spider为可定义的名字,与上文的(2)步中同名

含Item的爬取操作举例(Item:将爬取的数据封装成对象,通过对象访问爬取的一些属性)同样操作aqi_spider.py文件,在类下加入如下方法

    def parse(self,response):
        bs = BeautifulSoup(response.body,'lxml')
        div_obj = bs.find('div',class_ = 'all')
        li_tag_list = div_obj.find_all('li')
        for li_tag in li_tag_list:
            city_item = CityItem()
            city_item['city_name'] = li_tag.find('a').text
            city_item['city_link'] = li_tag.find('a')['href']
            yield city_item

接下来对数据进行进一步处理——编写配置Pipeline。主要目的是处理之前解析的Item,将文件保存
首先,需要在setting.py中配置信息。
在这里插入图片描述
添加open_spider()函数,close_spider()函数
在这里插入图片描述
通过scrapy crawl api_spider语句运行文件后会在目录中产生一个cities.csv文件

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章           查看所有文章
加:2022-05-01 15:44:16  更:2022-05-01 15:48:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:46:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码