php正则函数抓取网页连接(python编程快速上手(持续更新中……)概述 )

优采云 发布时间: 2021-10-02 04:25

  php正则函数抓取网页连接(python编程快速上手(持续更新中……)概述

)

  快速上手python编程(持续更新中...) 正则表达式概述

  用于检索和替换

  正则表达式可以

  特定模式的测试字符串

  根据一定的规则替换文本

  基于模式匹配从字符串中提取字符串(爬虫)

  正则表达式组合

  正则表达式工具介绍

  正则表达式好友

  正则表达式用于匹配单个字符 匹配多个字符 匹配开头和结尾

  ^ 表示匹配下一个字符的开头

  $ 表示匹配前一个字符的结尾

  重新模块操作

  re模块的作用:Python提供了一个模块进行常规操作

  """

1、导入模块

2、通过 match 方法,验证正则

3、判断 验证是否成功

4、如果成功,获取匹配的结果

"""

import re

# 1、导入模块

# 2、通过 match 方法,验证正则

# re.match("正则表达式", "要验证/检测的字符串")

# match() 方法如果匹配成功,返回 match object 对象

# match() 方法如果匹配失败,返回 None

# 正则字符串 要检测的内容

result = re.match("\w{4,20}@163\.com$", "hello@163.com")

# 3、判断 验证是否成功

if result:

print("匹配成功!")

# 4、如果成功,获取匹配的结果

print("匹配结果:", result.group())

else:

print("匹配失败!")

  匹配组“|”

  """

1、导入模块

2、通过 match 方法,验证正则

3、判断 验证是否成功

4、如果成功,获取匹配的结果

"""

import re

# 1、导入模块

# 2、通过 match 方法,验证正则

result = re.match("^[0-9]?[0-9]$|^100$", "99")

# 3、判断 验证是否成功

if result:

print("匹配成功!")

# 4、如果成功,获取匹配的结果

print("匹配结果:", result.group())

else:

print("匹配失败!")

  匹配组“()”

  """

1、导入模块

2、match() 进行匹配

3、判断匹配的结果

4、取出匹配的内容

"""

import re

# 1、导入模块

# 2、match() 进行匹配

# result = re.match("\w{4,20}@(163|126|qq|sina)\.com$", "hello@126.com")

result = re.match("(\d{3,4})-(\d{7,8})", "010-12345678")

# 3、判断匹配的结果

if result:

print("匹配成功!")

# 4、取出匹配的内容

print("匹配结果:", result.group())

print("提取区号:", result.group(1))

print("提取电话号码:", result.group(2))

else:

print("匹配失败!")

  匹配组“\”

  ?P 给组一个别名,别名是name1

  """

1、导入模块

2、通过 match 方法,验证正则

3、判断 验证是否成功

4、如果成功,获取匹配的结果

"""

import re

# 1、导入模块

# 2、通过 match 方法,验证正则

# \1 --> \ 有特殊用法

# \\ --> \

# \1 表示引用第1个分组

# result = re.match(".*", "asdbasldfj")

result = re.match(".*", "asdbj")

# 3、判断 验证是否成功

if result:

print("匹配成功!")

# 4、如果成功,获取匹配的结果

print("匹配结果:", result.group())

else:

print("匹配失败!")

  再先进的方法

  1.搜索

  #result = re.match(“你好”, “”)

  #result = re.search(“你好”, “”)

  #match 和搜索的区别

  #1)match 从.group中需要检测的字符串的开头开始匹配,失败则返回None

  #2)search 从待检测字符串中搜索符合规则规则的内容,如果有则返回匹配对象对象

  2.findall

  #二、findall("Regular expression", "Content to be found") 搜索所有,返回值是一个列表

  #result = re.findall("\d+", "阅读次数:9999,转发次数:6666,评论次数:38")

  3.子替换

  #三、sub("regular expression", "new content", "string to be替换") 字符串替换(根据正则表达式,找到字符串并替换为指定内容)

  #返回值是替换后的字符串findall

  #result = re.sub("\d+", "10000", "阅读次数:9999,转发次数:6666,评论次数:38")

  4.拆分

  #四、split("Regular expression", "String to be split") 根据正则表达式拆分字符串,返回值是一个列表

  Python贪婪和非贪婪

  """

1、导入模块

2、通过 match 方法,验证正则

3、判断 验证是否成功

4、如果成功,获取匹配的结果

"""

import re

# 1、导入模块

# 2、通过 match 方法,验证正则

# 贪婪:满足正则的情况下,尽可能多的取内容 默认为贪婪模式

# 非贪婪:满足正则的情况下,尽可能少的取内容

# 把贪婪模式该为非贪婪模式,需要使用符号:? 在+ * ? {} 后面添加? 可以变成非贪婪

# result = re.match("aaa(\d+?)", "aaa123456")

str1 = """

"""

result = re.search('src=\"(.*?)\"', str1)

# 3、判断 验证是否成功

if result:

print("匹配成功!")

# 4、如果成功,获取匹配的结果

print("匹配结果:", result.group())

print("地址:",result.group(1))

else:

print("匹配失败!")

  r的作用

  """

1、导入模块

2、通过 match 方法,验证正则

3、判断 验证是否成功

4、如果成功,获取匹配的结果

"""

import re

# 1、导入模块

# 2、通过 match 方法,验证正则

#

# \\ --> \

# r的作用 让正则中的 \ 没有特殊含义(转义) 就是代表原声的 斜杠

result = re.match(r".*", "asdbj")

# 3、判断 验证是否成功

if result:

print("匹配成功!")

# 4、如果成功,获取匹配的结果

print("匹配结果:", result.group())

else:

print("匹配失败!")

  简单爬虫_阳光天堂

  """

https

一、定义函数获取列表页的内容页地址 get_movie_links()

1、定义列表的地址 https://www.ygdy8.com/html/gndy/dyzz/list_23_1.html

2、打开url地址,获取数据

3、解码获取到的数据

4、使用正则得到所有的影片内容也地址

二、主函数 main

"""

import urllib.request

import re

def get_movie_links():

"""获取列表页影片信息"""

# 1、定义列表的地址

film_list_url = "https://www.ygdy8.com/html/gndy/dyzz/list_23_1.html"

# 2、打开url地址,获取数据

reponse_list = urllib.request.urlopen(film_list_url)

# 2.1 通过read()读取网络资源数据

response_list_data = reponse_list.read()

# 3、解码获取到的数据

response_list_text = response_list_data.decode("GBK")

# 4、使用正则得到所有的影片内容地址

# 4.1 使用findall() 根据正则查找所有影片对应的内容页地址

url_list = re.findall(r"<a href=\"(.*)\" class=\"ulink\">(.*)</a>", response_list_text)

# 4.2 保存地址

# url_list = [(&#39;/html/.......&#39;, &#39;xxx影片&#39;),(&#39;/html/.......&#39;, &#39;xxx影片&#39;)]

# print(url_list)

# 定义一个字典,用于保存影片信息

films_dict = {}

# 4.3 循环遍历 url_list

i = 1

for content_url,film_name in url_list:

# 拼接内容页地址

content_url = "https://www.ygdy8.com"+content_url

# content_url = &#39;https://www.ygdy8.com/html/gndy/dyzz/20210920/61870.html&#39;

# print("影片名称:%s,内容页地址:%s" % (film_name, content_url))

# 4.4 打开内容页地址

response_content = urllib.request.urlopen(content_url)

# 4.5 接收内容页数据

# 4.6 读取网络资源

response_content_data = response_content.read()

# 4.7 解码得到内容页的文本内容

response_content_text = response_content_data.decode("GBK")

# 4.8 取出下载地https://www.ygdy8.net址

# print(response_content_text)

result = re.search(r"<a target=\"_blank\" href=\"(.*?)\">", response_content_text)

# print("11111111111", result)

print(result.group(1))

# 字典

# {"xxxx影片": "xxx地址"}

films_dict[film_name] = result.group(1)

print("已经获取%d条信息" % i)

i += 1

return films_dict

def main():

""""""

films_dict = get_movie_links()

# print(films_dict)

# 把字典遍历输出

for film_name,film_link in films_dict.items():

print("%s | %s" % (film_name, film_link))

if __name__ == &#39;__main__&#39;:

main()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线