Python使用正则表达式爬取网页信息 | 您所在的位置:网站首页 › 正则表达式获取网页文本中的文字 › Python使用正则表达式爬取网页信息 |
Python使用正则表达式爬取网页信息
一、正则表达式是什么?二、实战项目1.爬取内容2.访问链接3.正则表达式书写的灵感4.项目源代码
一、正则表达式是什么?
概念: 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 个人理解: 简单来说就是使用正则表达式来写一个过滤器来过滤了掉杂乱的无用的信息(eg:网页源代码…)从中来获取自己想要的内容 二、实战项目 1.爬取内容获取上海所有三甲医院的名称并保存到.txt文件中 2.访问链接上海三甲医院网站 link:https://yyk.99.com.cn/sanjia/shanghai/ 3.正则表达式书写的灵感进入网站查看本页面的源代码发现 :医院的名称都是放在一个 ......盒子里我们只需要直接把这个盒子里面的数据过滤一下就行 正则表达式: 法一: 1.一级过滤 : (.*) 开头是: (.*) 结尾是: 2.二级过滤: title="(.*[院心部])*)" 获取title=" " 里面的信息 法二: 优化后一次性过滤:贴图片 开头是: 结尾是: 4.项目源代码 import requests import re url = "https://yyk.99.com.cn/sanjia/shanghai/" # 模拟浏览器的访问 headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) ' 'Gecko/20100101 Firefox/87.0'} res = requests.get(url,headers=headers) if res.status_code == 200: #1.获取网页源代码 raw_text = res.text #2.正则表达式书写: #2.2注意:正则表达式默认匹配的是一行 我们的源代码是多行匹配的要加另一个参数 re.DOTALL #2.3正则法一: #re.findall() 返回的是lsit集合 一次过滤 re_res = re.findall(r'(.*)', raw_text,re.DOTALL) #re_res[0] 获取下标是的数据 二次过滤 res=re.findall(r'title="(.*[院心部])*)"',re_res[0]) #检查打印获取到的信息 print(res) #2.4正则法二: #(优化)不用二次过滤 一次过滤就解决了 # re_list = re.findall(r'', res.text) #print(re_list) # 写入文件中 read = open("上海医院名单", "w", encoding='utf-8') for i in res: read.write(i) read.write("\n") read.close() else: print("error")项目目录: 部分结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |