用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

python正则表达式抓取网页HTML指定标签内容

2019-12-06 作者: pycharm举报

[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 指定标签内容 - 循环获取社区首页帖子网址与标题


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...