[python]代码库
import requests
import re
#获取页面全部HTML信息
res = requests.get('https://yuncode.net/')
res.encoding = 'utf-8'
html = res.text
#print(html)
#将HTML信息写入文件
f = open(r"C:\Users\melanie\Desktop\web_html.txt",'w+',encoding="utf-8") #w+:以追加方式打开文件
f.write(html)
f.close()
#读取HTML信息
f = open(r"C:\Users\melanie\Desktop\web_html.txt",'r+',encoding="utf-8") #r+:以读写方式打开文件
data = f.readlines() #data是数组类型
count = 0 #初始化计数,计算获取的帖子的数量;也可以最后直接获取数组的长度
url_list = [] #用于存储帖子url
title_list = [] #用于存储帖子标题
search = '<a class="ft-a-title"' #查找条件,见上述分析
#逐行读取HTML信息
for line in range(len(data)):
if search in data[line]:
line_html = data[line] + data[line+1] #此句关键,见上述分析
#print(line_html)
#正则表达式获取帖子URL
res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
link = re.findall(res_url , line_html, re.I|re.S|re.M)
for url in link:
print(url)
url_list.append(url) #将url加入数组
#正则表达式获取帖子标题
res = r'<a .*?>(.*?)</a>'
text=re.findall(res, line_html, re.I|re.S|re.M)
for content in text:
print(content)
title_list.append(content) #将标题加入数组
#匹配查找成功,计数+1
count += 1
else:
continue
#最终统计查找的帖子数量
print('当前页共计 '+ str(count) +' 篇帖子')
#打印所有url与标题
print(url_list)
print(title_list)
#最终务必记得关闭文件
f.close()
4. 运行结果
每日推荐 | 正则表达式获取网页 HTML 指定标签内容 - 循环获取社区首页帖子网址与标题