• Python实现抓取CSDN热门文章列表


    1、使用工具:
    Python3.5
    BeautifulSoup
    2、抓取网站:
    csdn热门文章列表 http://blog.csdn.net/hot.html
    3、分析网站代码:
    这里写图片描述
    4、实现代码:

    __author__ = 'Administrator'
    import urllib.request
    import re
    from bs4 import BeautifulSoup
    
    
    ########################################################
    #
    # 抓取csdn首页文章http://blog.csdn.net/?&page=1
    #
    #
    #
    ########################################################
    class CsdnUtils(object):
        def __init__(self):
            user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
            self.headers = {'Cache-Control': 'max-age=0',
                            'Connection': 'keep-alive',
                            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                            'User-Agent': user_agent,
            }
    
        def getPage(self, url=None):
            request = urllib.request.Request(url, headers=self.headers)
            response = urllib.request.urlopen(request)
            soup = BeautifulSoup(response.read(), "html.parser")
            #print(soup.prettify())
            return soup
    
        def parsePage(self, url=None, page=None):
            soup = self.getPage(url)
            itemBlog = soup.find_all('div', 'blog_list')
            cnArticle = CsdnUtils
            print("========================第", page, "页======================================")
            for i, itemSingle in enumerate(itemBlog):
                cnArticle.num = i
                cnArticle.author = itemSingle.find('a', 'user_name').string
                cnArticle.postTime = itemSingle.find('span', 'time').string
                cnArticle.articleView = itemSingle.find('a', 'view').string
                if itemSingle.find('h1').find('a').has_attr('class'):
                    cnArticle.type = itemSingle.find('h1').find('a', 'category').string
                else:
                    cnArticle.type = "None"
                cnArticle.title = itemSingle.find('h1').find('a', attrs={'name': True}).string
                cnArticle.url = itemSingle.find('h1').find('a', attrs={'name': True}).get("href")
                print("数据:", cnArticle.num + 1, '	', cnArticle.author, '	', cnArticle.postTime, '	',
                      cnArticle.articleView, '	', cnArticle.type, '	', cnArticle.title, '	', cnArticle.url)
    
    
    #######     执行入口    ########
    if __name__ == "__main__":
    
        #要抓取的网页地址'http://blog.csdn.net/?&page={}'.format(i+1),i+1)
        url = "http://blog.csdn.net/hot.html"
    
        cnblog = CsdnUtils()
        for i in range(0, 5):
            cnblog.parsePage(url, i + 1)
    
    

    5、执行结果:
    这里写图片描述

  • 相关阅读:
    vss的ss.ini丢失或损坏导致的vss无法登录错误
    NHibernate各种数据库连接参数文件配置方法说明
    oracle操作语句
    企业微信群聊机器人发送本地图片
    securecrt 或xshell 转发80端口
    SecureCRT 或 XSHELL 转发 X11 图形化GUI
    Windows 创建 .gdbinit 提示必须键入文件名
    vscode C++ 程序 windows
    vscode C++ 程序 windows
    解决source insight 4.0 不识别.cc文件的问题
  • 原文地址:https://www.cnblogs.com/luweiwei/p/5968460.html
Copyright © 2020-2023  润新知