8月12日

今天开始尝试首先信息领域热词

首先我对这部分表示好像不许要用到hadoop 

我采用python 加javaweb的方式实现

首先,参考了之前的作品

选择收集博客园的新闻来做热词分析

https://news.cnblogs.com/n/recommend

用python进行爬取

1.导入包 

import requests
import re

2.网址和伪装成浏览器的header

url = 'https://news.cnblogs.com/n/digg'
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
}

3.获取网页源码,返回的是源代码,(这是什么格式我说不上来)

def get_page(url):
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
print('获取网页成功')
print(response.encoding)
return response.text
else:
print('获取网页失败')
except Exception as e:
print(e)

4.解析网页

items = re.findall('<h2 class="news_entry">.*?<a href=".*?" target="_blank">(.*?)</a>',page,re.S)#re.S让换行符包含在字符中
#我不明白两个标签之间为什么要加.*? 难道空也算字符,并且去掉这个就获取失败,对正则表达式理解还不是很深刻
#.*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复
# 如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。

这里是整个的核心,在通过正则表达式进行匹配找到标签内的内容

 

 

 不过我有一个很大的问题:

*****这两表格标签之间为什么要加.*? 这三个符号用来指代什么呢,难道是空格吗,这三个符号去掉完全取不到值,去掉?仍然无效,我表示很不理解

 

另外注意用正则获取到的数据是一个列表





学习时间:11:47到15点05














            


posted @ 2021-08-12 15:10  不咬牙  阅读(31)  评论(0编辑  收藏  举报