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

相关文章
|
2月前
|
JavaScript 编译器 API
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
【C++ 函数和过程 进阶篇】全面掌握C++函数返回值:从入门到精通的实战指南
78 1
|
2月前
|
编译器 测试技术 C++
【Python 基础教程 02】 数据类型全解析:从基础到高级,实用指南及详细使用案例
【Python 基础教程 02】 数据类型全解析:从基础到高级,实用指南及详细使用案例
191 0
|
编译器 C语言 存储
第四章 表达式《C语言程序设计现代方法(第2版)》读书笔记
第四章 表达式《C语言程序设计现代方法(第2版)》读书笔记
第四章 表达式《C语言程序设计现代方法(第2版)》读书笔记
|
存储 Python
第四章--第一节:函数
第四章--第一节:函数
100 0
|
索引 Python
异常简介 | Python从入门到精通:高阶篇之四十
本节我们介绍了程序运行过程中异常的产生以及简单的处理方式(try语句)。
异常简介 | Python从入门到精通:高阶篇之四十
类与对象的案例实战案例解析 | Python从入门到精通:高阶篇之二十五
类与对象的案例实战案例解析。思考该如何保证数据的安全性?
类与对象的案例实战案例解析 | Python从入门到精通:高阶篇之二十五
类的简介 | Python从入门到精通:高阶篇之二十
本节介绍了python内置的类以及类的命名,另外还包含自定义类的命名规则。
类的简介 | Python从入门到精通:高阶篇之二十
封装简介 | Python从入门到精通:高阶篇之二十六
本节重点介绍了封装的定义以及封装的总体思路,隐藏属性名,增加getter和setter方法,使用setter方法设置属性,使用getter方法获取属性。
封装简介 | Python从入门到精通:高阶篇之二十六
|
存储 Python
面向对象简介 | Python从入门到精通:高阶篇之十九
本节重点介绍的面向对象的编程思想。代码可复用性高,易于维护,容易阅读,但是编写思维比较麻烦一点。