1.python爬虫基础——正则表达式

简介: #python网络爬虫#通用网络爬虫(没有目的,爬去所有的URL) 聚焦网络爬虫(过滤无关的链接)#python数据分析与挖掘实战的正则表达式#正则表达式 世界上信息非常多,而我们关注的信息有限。
#python网络爬虫
#通用网络爬虫(没有目的,爬去所有的URL)  聚焦网络爬虫(过滤无关的链接)

#python数据分析与挖掘实战的正则表达式
#正则表达式  世界上信息非常多,而我们关注的信息有限。假如我们希望只提取出关注数据,此时可以通过一些表达式进行提取,正则表达式就是其中一种进行数据筛选的表达式。

#原子
#原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子。
#常见的原子类型有:普通字符作为原子,非打印字符作为原子,通用字符作为原子,原子表

import re
pat="yue"         #普通字符作为原子
string="http://yum.iqianyue.com"
rst=re.search(pat,string)
print(rst)

pat1="\n"  #\n  \t            #非打印字符作为原子
string1='''dsfjsdjf
sdfsdfsdfsdf'''
rst1=re.search(pat1,string1)
print(rst1)

pat2="\w\dpython\w"
#\w 通用字符,匹配任意字母,数字,下划线
#\d 匹配任意一个十进制数       #\S 除了十进制数的任意
#|s 匹配空白字符       #\S 除了空白字符的任意字符
#\W 匹配任意一个除了字母,数字,下划线的东西
string2="hsdlfsga7pythonkdfshdskjf"
rst2=re.search(pat2,string2)
print(rst2)

pat3="pyth[jsz]n"           #原子表  定义一组平等的字符
string3="fsdjfpythjnjslkdfpythsnjfsjpythjsnfsd"
rst3=re.search(pat3,string3)
print(rst3)

#元字符
#正则表达式中具有一些特殊含义的字符,比如重复N次前面的字符等
#. 匹配任意字符
#^ 匹配字符串中的开始位置
#$ 匹配字符串中结束的位置
#* 匹配0次 1次或者多次的前面的原子
#?匹配0次或者1次前面的原子
#+ 匹配一次或多次前面的原子
#{3} 前面的原子恰好出现了3次  并且连在一起的
#{n} 出现了n次
#{4,7} 至少出现4次  之多出现7次  {4,}
#t|s  出现t或者s
#() 提取某一个内容
pat4=".python..."
string4="sjslkdjfpythonslfjshf"
rst4=re.search(pat4,string4)
print(rst4)

pat5="python|php"
string5="jfsdjphpjsljfspythonfsd"
rst5=re.search(pat5,string5)
print(rst5)

#模式修正符
#可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整等功能
#I 使正则表达式不区分大小写
#M 多行匹配
#L 本地化识别匹配
#U 根据Unicode解析字符
#S 让点也能匹配包括换行符
pat6="python"
pat7="python"
string6="sjljfaljafPythonsfjlsjfssfs"
rst6=re.search(pat6,string6)
print(rst6)

rst7=re.search(pat7,string6,re.I)    #模式修正符实例,不区分大小写
print(rst7)

#贪婪模式和懒惰模式
#贪婪模式尽可能的多的去匹配   #懒惰模式尽可能少的去匹配
pat8="p.*y"   #贪婪模式 更多的去覆盖
pat9="p.*?y"  #懒惰模式 更精准的定位
string8="jlsjfhspythonslfjshdpy"
rst8=re.search(pat8,string8)
rst9=re.search(pat9,string8)
print(rst8)
print(rst9)

#正则表达式函数
#正则表达式函数有re.match()函数,re.search()函数,全局匹配函数,re.sub()函数
#re.search()  从字符串中搜索出来
#re.match()   从头开始匹配,如果一开始没有,那么就返回None
#全局匹配函数
#re.sub()     主要用于替换

string10="phskfhskjhfkjshfjksgjfyskjhfksdh"
rst10=re.match(pat8,string10)
print(rst10)

rst11=re.compile(pat8).findall(string10)   #全局搜索函数  显示所有满足条件的  后面用的最多
print(rst11)

#常见正则表达式实例
#匹配.com .cn网址
pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
string='<a href="http://www.baidu.com">fjsljflds</a>'
rst=re.compile(pat).findall(string)
print(rst)

#简单的爬虫,如何爬取csdn某个课程页面上的QQ群
pat="<p>(\d*?)</p>"
import urllib.request
data=urllib.request.urlopen("http://edu.csdn.net/huiyiCourse/detail/215").read()
rst=re.compile(pat).findall(str(data))
print(rst)

#作业:如何爬取豆瓣出版社列表并写入文件中
#豆瓣网址:https://read.douban.com/provider/all
import urllib.request
import re

data=urllib.request.urlopen("https://read.douban.com/provider/all").read()
data=data.decode("utf-8")
pat='<div class="name">(.*?)</div>'
mydata=re.compile(pat).findall(data)
print(mydata)
fh=open("/Users/xubin/myapp/pythonfile/出版社file4.txt","w")
for i in range(0,len(mydata)):
    fh.write(mydata[i]+"\n")
fh.close()
目录
相关文章
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
2月前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
2月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
9天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
10天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
19天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
24天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
1月前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
2月前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
2月前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。