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

相关文章
|
Python
Python入门系列第二章--第四节:运算符(一)
Python入门系列第二章--第四节:运算符(一)
111 1
Python入门系列第二章--第四节:运算符(一)
|
Python
Python入门系列第二章--第四节:运算符(二)
Python入门系列第二章--第四节:运算符(二)
93 0
Python入门系列第二章--第四节:运算符(二)
|
iOS开发 Python
if语句的习题课 | Python从入门到精通:入门篇之十四
本节课公布一下上节课留下的五个练习题的答案。加深对if语句的用法理解。
if语句的习题课 | Python从入门到精通:入门篇之十四
|
存储 开发者 Python
|
开发者 Python
怎样使用自定义模块? | 手把手教你入门Python之四十九
如果一个py文件要作为一个模块被别的代码使用,这个py文件的名字一定要遵守标识符的命名规则。
怎样使用自定义模块? | 手把手教你入门Python之四十九
文件读取的其他方式 | Python从入门到精通:高阶篇之四十八
文件的读取除了read之外还有另外的三种方式:readline()、readlines()和for循环读取。readline()方法可以用来读取一行内容,readlines()方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表中返回,for循环默认读取全部文件。
文件读取的其他方式  | Python从入门到精通:高阶篇之四十八
异常对象 | Python从入门到精通:高阶篇之四十二
本节主要是介绍如何捕获异常对象,except直接捕获所有的异常,或者是except 异常类型 as 异常名,捕获具体的异常类型。
异常对象 | Python从入门到精通:高阶篇之四十二
|
Java Python
特殊方法 | Python从入门到精通:高阶篇之三十六
本节重点介绍了一些特殊方法的使用__str__()、__repr__()、比较大小、__len__()、object.__bool__(self),另外还有一些运算符。这些特殊方法的使用都是多态的体现。
特殊方法 | Python从入门到精通:高阶篇之三十六
下一篇
无影云桌面