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()

相关文章
|
1天前
|
数据采集 安全 JavaScript
【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程
【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程
8 0
|
1天前
|
数据采集 机器学习/深度学习 前端开发
【好书推荐3】Python网络爬虫入门到实战
【好书推荐3】Python网络爬虫入门到实战
9 0
|
1天前
|
数据采集 JSON API
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
【2024-简洁版】python爬虫 批量查询自己所有CSDN文章的质量分:方便快速上手修改代码
8 0
|
2天前
|
机器学习/深度学习 算法 TensorFlow
Python深度学习基于Tensorflow(6)神经网络基础
Python深度学习基于Tensorflow(6)神经网络基础
15 2
Python深度学习基于Tensorflow(6)神经网络基础
|
2天前
|
存储 Shell 网络安全
|
2天前
|
机器学习/深度学习 自然语言处理 PyTorch
使用Python实现循环神经网络(RNN)的博客教程
使用Python实现循环神经网络(RNN)的博客教程
20 1
|
2天前
|
网络协议 网络架构 数据格式
计算机网络学习笔记(一)
OSI七层网络模型旨在支持异构网络互联,从下到上分别为物理层(传输比特流)、数据链路层(帧传输,如交换机)、网络层(IP数据包路由,如路由器)、传输层(TCP/UDP,端到端通信)、会话层(管理会话)、表示层(数据格式转换)和应用层(用户接口,如FTP, SMTP)。每一层负责不同的通信功能,并通过协议如PPP, IP, TCP等协同工作。
|
2天前
|
缓存 网络协议 开发者
计算机网络学习笔记(三)
TCP的异常终止使用reset报文,用于强制关闭连接,不等待正常四次挥手。RST标志位设置时,发送方直接丢弃缓存,接收方无需确认。常见情况包括:尝试连接服务器未开放的端口、一方异常崩溃、收到不属于现有连接的报文、超时未收到确认报文或应用开发者优化效率。reset报文帮助释放资源,防止连接挂起。
|
2天前
|
安全 数据安全/隐私保护
计算机网络学习笔记(四)
HTTPS流程涉及服务器的公钥/私钥和客户端随机密钥。首先,客户端向服务器443端口发起请求,服务器发送公钥给客户端。客户端验证公钥后生成随机密钥(client key),用公钥加密后发送回服务器。服务器用私钥解密获取client key,然后用它加密数据成密文传回客户端。客户端用client key解密完成安全传输。
|
3天前
|
程序员 Python
python lambda表达式表达式详解及应用
python lambda表达式表达式详解及应用
22 0