zoukankan      html  css  js  c++  java
  • 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














                


  • 相关阅读:
    eclipse整合spring+springMVC+Mybatis
    复杂系统分析与设计思路
    .NET数据挖掘与机器学习开源框架
    原来rollup这么简单之 rollup.watch篇
    面试官:说说你对css效率的理解
    两个实用的调试技巧
    Roma
    一个很实用的css技巧简析
    仅仅知道如何终止XHR请求,或许对你来说是不够的!
    再问你一遍,你真的了解try..catch(finally)吗???
  • 原文地址:https://www.cnblogs.com/buyaoya-pingdao/p/15132827.html
Copyright © 2011-2022 走看看