Python网络爬虫简介与表达式基础|学习笔记

简介: 快速学习Python网络爬虫简介与表达式基础

开发者学堂课程【Python网络爬虫实战Python网络爬虫简介与表达式基础】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/531/detail/7144


Python网络爬虫简介与表达式基础


内容介绍:

一、Python网络爬虫课程体系简介

二、Python网络爬虫是什么

三、正则表达式基础实战

四、Xpath表达式基础实战


一、Python网络爬虫课程体系简介

1.Python网络爬虫简介与表达式基础(本节)

2.Urllib爬虫项目编写实战

3.抓包分析技术精讲

4.Requests爬虫项目编写实战

5.Scrapy爬虫项目编写实战

6.前程无忧招聘信息爬虫项目开发实战

7.淘宝网商品信息爬虫项目开发实战

8.知乎网信息爬虫项目开发实战(含登录)

9.爬虫常见的反爬策略与反爬攻克手段

10.分布式爬虫编写实战

Python基础课程: https://edu.aliyun.com/course/154


二、Python网络爬虫是什么

网络爬虫是一种互联网信息的自动化采集程序,主要作用是代替人工对互联网中的数据进行自动采集与整理,以快速地、批量地获取目标数据。

如下所示,是网络爬虫可以做的一些事情:

1.批量采集某个领域的招聘数据,对某个行业的招聘情况进行分析

2.批量采集某个行业的电商数据,以分析出具体热销商品,进行商业决策

3.采集目标客户数据,以进行后续营销

4.批量爬取腾讯动漫的漫画,以实现脱网本地集中浏览

5.开发一款火车票抢票程序,以实现自动抢票

......


三、正则表达式基础实战

网络爬虫程序在将网页爬下来之后,其中还有一个关键的步骤就是需要对我们关注的目标信息进行提取,而表达式一般就是用于信息筛选提取的工具。

正则表达式是一种功能强大的表达式,并且非常好用,所以建议掌握。

打开idle实验。

基础1:

全局匹配函数使用格式     re.compile(正则表达式) .findall(源字符串)

普通字符            正常匹配

\n                  匹配换行符

\t                  匹配制表符

\w                 匹配字母、数字、下划线

\W                 匹配除字母、数字、下划线

\d                  匹配十进制数字

\D                 匹配除十进制数字

\s                  匹配空白字符

\S                  匹配除空白字符

[ab89x]             原子表,匹配ab89x中的任意一个

[^ab89x]             原子表,匹配除ab89x中的任意一个

实例1:

源字符串:"aliyunedu"正则表达式:"yu"匹配出什么?    yu

源字符串:"""aliyun

edu"""  //出现了换行

正则表达式:“yun\n”匹配出什么?   yun\n

源字符串:"aliyu89787nedu"正则表达式:"\w\d\w\d\d\w"匹配出什么?   u89787

源字符串:"aliyu89787nedu"正则表达式:"\w\d[nedu]\w"匹配出什么?   87ne

运行代码示例:

import re

string="aliyunedu"

pat="yu"

re.comp ile(pat).findall (string)

输出结果[ 'yu']

基础2:

.   匹配除换行外任意一个字符

^  匹配开始位置

$  匹配结束位置

*  前一个字符出现o\1\多次

?  前一个字符出现0\1次

+  前一个字符出现1\多次

{n}  前一个字符恰好出现n次

{n,}  前一个字符至少n次

{n,m}  前一个字符至少n,至多m次

|  模式选择符或

()  模式单元,通俗来说就是:想提取出什么内容,就在正则中用小括号将其括起来

实例2:

源字符串:"aliyunnnnji87362387aoyubaidu""

正则表达式:"ali..."

匹配出什么?   aliyun

正则表达式:"^li..."

匹配出什么?   None

正则表达式:"^ali..."

匹配出什么?   aliyun

正则表达式:"bai..$"

匹配出什么?   baidu

正则表达式:"ali.*"

匹配出什么?aliyunnnnji87362387aoyubaidu

Tips:默认贪婪,即默认尽可能多地进行匹配

正则表达式:"aliyun+"

匹配出什么?   aliyunnnn

正则表达式:"aliyun"

匹配出什么?   aliyun

正则表达式:"yun{1,2}"

匹配出什么?   yunn

正则表达式:"^al(i..)."

匹配出什么?    iyu

基础3:

贪婪模式:尽可能多地匹配

懒惰模式:尽可能少地匹配,精准模式

默认贪婪模式

如果出现如下组合,则代表为懒惰模式;

*?

+?

实例3:

源字符串: "poythonyhjskisa"

正则表达式:"p.*y"

匹配出什么?   poxtphony

为什么?   默认贪婪模式

源字符串:"poythonyhjskisa"

正则表达式:"p.*?y

匹配出什么?  ['poy', 'phony"]

为什么?   懒惰模式,精准匹配

基础4:

模式修正符:在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改

re.S    让.也可以匹配多行

re.l    让匹配时忽略大小写(默认情况下正则表达式严格区分大小写)

实例4:

源字符串:"Python"

正则表达式:“pyt"

匹配方式:re.compile("pyt").findall("Python")

匹配结果:[]

源字符串:"Python"

正则表达式:"pyt"

匹配方式:re.compile("pyt" ,re.l).findall("Python")

匹配结果:Pyt

源字符串:string="Python"

正则表达式:"pyt"

匹配方式:re.compile("pyt",re.l).findall("Python")

匹配结果:Pyt

源字符串: string="""我是阿里云大学

欢迎来学习

Python 网络爬虫课程

"""

正则表达式:pat="阿里.*?Python"

匹配方式:re.compile(pat).findall(string)

匹配结果:[]

源字符串: string="""我是阿里云大学

欢迎来学习

Python网络爬虫课程

"""

正则表达式: pat="阿 里. * ?Python"

匹配方式:re.compile(pat,re.S)findall(string)

匹配结果: ['阿里云大学\n欢迎来学习\nPython']


四、Xpath表达式基础实战

除了正则表达式之外,还有一些非常好用的信息筛选的工具,比如XPath表达式、BeautifulSoup等等,不可能也不需要都进行掌握,讲解一下XPath表达式。

/  逐层提取

text()  提取标签下面的文本

//标签名**  提取所有名为**的标签

//标签名[@属性='属性值']  提取属性为XX的标签

@属性名  代表取某个属性值

实例:

<html>

<head>

<title>

主页

</title>

</head>

<body>

<p>abc</p>

<p>bbbvb</p>

<a href="//gd.alibaba.com/go/v/pcdetail" target="_top">安全推荐</a>

<a href="//ad.alibaba. com/go/v/pcdetail" target="_top">安全推荐2</a>

<div class="J_AsyncDC" data-type="dr">

<div id="official-remind">明月几时有

</div>

</div>

</body>

提取标题:/html/head/title/text()

提取所有的div标签://div

提取div中<div class="tools">标签的内容:

//div[ @class='tools']/text()

相关文章
|
6月前
|
安全 算法 编译器
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
【C++ 泛型编程 进阶篇】深入探究C++模板参数推导:从基础到高级
700 3
|
6月前
|
JavaScript 编译器 API
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
193 1
|
1月前
|
Java
ChatGPT高效提问—prompt常见用法(续篇十二)
ChatGPT高效提问—prompt常见用法(续篇十二)
|
6月前
|
前端开发
前端知识笔记(十一)———拓展运算符
前端知识笔记(十一)———拓展运算符
98 0
|
机器学习/深度学习 人工智能 自然语言处理
NLP实践!文本语法纠错模型实战,搭建你的贴身语法修改小助手 ⛵
本文详细介绍 GECToR 这一优秀的文本纠错模型,使用 Transformer 编码器的序列标注器,以保证文本数据的质量,进而提升NLP模型的效果。
1701 6
NLP实践!文本语法纠错模型实战,搭建你的贴身语法修改小助手 ⛵
|
安全 前端开发 测试技术
SystemVerilog学习-01-系统验证概述(一)
SystemVerilog学习-01-系统验证概述
328 0
SystemVerilog学习-01-系统验证概述(一)
|
机器学习/深度学习 数据挖掘 数据处理
Python机器学习从入门到高级:手把手教你处理分类型数据(含详细代码)
Python机器学习从入门到高级:手把手教你处理分类型数据(含详细代码)
|
监控 安全 搜索推荐
SystemVerilog学习-01-系统验证概述(二)
SystemVerilog学习-01-系统验证概述
400 0
SystemVerilog学习-01-系统验证概述(二)
|
索引 Python
Python初级案例教学之组合数据类型(列表)【第六课】
## 组合数据类型 字符串、列表、元组、集合和字典都属于组合数据类型。 根据数据的组织方式不同,组合数据类型主要分为三类: 序列、集合和映射。 序列类型包括: • 字符串(string) • 列表(list) • 元组(tuple) 这里主要讲一下列表!
569 1
Python初级案例教学之组合数据类型(列表)【第六课】
|
机器学习/深度学习 算法 人工智能
独家 | 菜鸟级机器学习入门(附代码实例)
本文将简要介绍什么是机器学习,其运作原理,以及两个主要的机器学习的算法。
3521 0