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