Python 现在越来越火,连小学生都在学习 Python了 ^ ^,为了跟上时代,赶个时髦,秉承活到老学到老的精神,慢慢也开始学习 Python;理论是实践的基础,把 Python 相关语法看了,就迫不及待,大笔一挥来个 Hello world 压压惊,理论终归是理论,实践还是要要的嘛,动手了之后,才能更好的掌(chui)握(niu)基(bi)础;发车了..........
首先浏览器输入 进入开源中国官网,点击顶部导航栏的 “博客” 选项进入博客列表页面,之后点击左侧 “服务端开发与管理” 选项,我们要爬取的是服务端相关的文章,如下图所示:
接下来分析文章列表的布局方式,按 F12 打开调试页面,如下所示:
可以看到,一篇文章的相关信息就是一个 div, class 属性为 item blog-item,打开该 div,如下:
我们要抓取的是文章的标题,描述,URL,和阅读数,标题和URL可以通过 a 标签来获取,描述通过 <dev class=description> 来获取,而阅读数则要麻烦些,是第三个 <div class=item>,
通过以下代码就可以获取到以上到相关信息:
# 获取每个文章相关的 DIV articles_div = beautiful_soup.find_all("div", class_="item blog-item") # 处理每个 DIV for article_div in articles_div: content_div = article_div.find("div", class_="content") header_div = content_div.find("a", class_="header") # 文章URL url = header_div["href"] # 文章标题 title = header_div["title"] # 文章描述 description_str = content_div.find("div", class_="description").find("p", class_="line-clamp") if description_str is None: continue description = description_str.text # 文章阅读数 read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item") # find_next_sibling 获取兄弟节点 read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item") read_count = read_count_i.getText()
上述代码就是主要的获取相关信息的逻辑,因为阅读数没有唯一id,或者 class ,所有可以通过 find_next_sibling 来获取兄弟节点;
接下来就对获取到到文章进行处理,如按照阅读数大于等于1000过滤文章,并按照阅读数从高到低低排序,并且写到文件中:
首先要定义一个文章类,用来表示文章的相关信息,如下:
"""文章实体类@authon:tsmyk0715"""class Article: def __init__(self, title, url, content="", read_cnt=0): """ 文章类构造方法 :param title:文章标题 :param url: 文章 URL :param content: 文章内容 :param read_cnt: 文章阅读数 """ self.title = title self.url = url self.content = content self.read_cnt = read_cnt def __str__(self): return u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(self.title, self.read_cnt, self.url)
之后,定义文章的处理类 OschinaArticle ,相关处理逻辑在该类中实现:
import requests# 使用 BeautifulSoup 库来解析 HTML 页面from bs4 import BeautifulSoupimport loggingimport time# 导入定义的文章实体类from Article import Articleclass OschinaArticle: def __init__(self): # 日志 self.log = logging # 设置日志级别为 INFO self.log.basicConfig(level=logging.INFO) # 把文章写到文件的行号 self.file_line_num = 1
接下来获取 BeautifulSoup 对象:
def getSoup(self, url): """ 根据 url 获取 BeautifulSoup 对象 """ # 请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "Host": "www.oschina.net"} # 请求的时候,需要加上头部信息,表示是人在操作,而不是机器,不加头部信息会报错 response = requests.get(url, headers=headers) return BeautifulSoup(response.text, "html.parser")
之后,通过 BeautifulSoup 来解析 HTML 页面,获取文章相关信息,之后,根据相关信息创建文章对象,放到集合中进行返回:
def get_articles(self, url): # 存放文章的集合,进行返回 article_list = [] beautiful_soup = self.getSoup(url) self.log.info(u"开始解析 HTML 页面...") articles_div = beautiful_soup.find_all("div", class_="item blog-item") for article_div in articles_div: content_div = article_div.find("div", class_="content") header_div = content_div.find("a", class_="header") # 文章URL url = header_div["href"] # 文章标题 title = header_div["title"] # 文章描述 description_str = content_div.find("div", class_="description").find("p", class_="line-clamp") if description_str is None: continue description = description_str.text # 文章阅读数 read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item") # find_next_sibling 获取兄弟节点 read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item") read_count = read_count_i.getText() # 根据相关信息创建文章对象,放到集合中,进行返回 __article = Article(title, url, description, read_count) article_list.append(__article) self.log.info(u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(title, read_count, url)) return article_list
关于 BeautifulSoup 的相关 API 可以参考: ,有中文版哟
因为文章的阅读数如果超过 1000 的话,就用 K 来表示,为了在后面筛选指定阅读数的文章,所以需要进行处理,把 K 转换为 1000,代码如下:
def handler_read_count(self, article_list): """ 处理阅读数:把 K 转换为 1000 :param article_list:文章列表 """ if article_list is None or len(article_list) == 0: self.log.info(u"文章列表为空...") return for article in article_list: read_count_str = article.read_cnt.strip() read_count = 0 if isinstance(read_count_str, str): if read_count_str.endswith("K"): read_count_str = read_count_str[:-1] # 去掉K read_count = int(float(read_count_str) * 1000) else: read_count = int(read_count_str) article.read_cnt = read_count
接下来就是文章根据阅读数进行筛选和排序了,筛选出阅读数大于等于指定值并且按照阅读数从高到低排序,代码如下:
def get_article_by_read_count_sort(self, article_list, min_read_cnt): """ 获取大于等于指定阅读数的文章信息, 并按照阅读数从高到低排序 :param article_list: 文章列表 :param minx_read_cnt: 最小阅读数 :return: """ if article_list is None or len(article_list) == 0: self.log.info(u"文章列表为空...") return article_list_return = [] for article in article_list: if article.read_cnt >= min_read_cnt: article_list_return.append(article) # 使用 Lambda 对集合中的对象按照 read_cnt 属性进行排序 article_list_return.sort(key=lambda Article: Article.read_cnt, reverse=True) return article_list_return
以上就可以获取到我们想要的文章信息了,此外,我们可以把信息写到文件文件中,代码如下:
def write_file(self, article_list, file_path): # 创建 IO 对象 file = open(file_path + "/articles.txt", "a") for article in article_list: _article_str = str(article) file.write("(" + str(self.file_line_num) + ")" + _article_str) file.write("\n") file.write("--------------------------------------------------------------------------------------------------------------------------------------------------------") file.write("\n") # 文件行号 self.file_line_num += 1 time.sleep(0.2) # 休眠 200 毫秒 file.close()
之后,把上面的方法整合在一起,代码如下:
def run(self, url, min_read_count): # 获取所有文章 article_list = self.get_articles(url) # 对阅读数进行处理 self.handler_read_count(article_list) # 筛选阅读数大于等于指定值,并按阅读数从高到低排序 _list = self.get_article_by_read_count_sort(article_list, min_read_count) # 写文件 self.write_file(_list, "G:/python") # 打印控制台 for a in _list: self.log.info(a)
main 方法测试一下,地址输入:https://www.oschina.net/blog?classification=428640, 文章阅读数要大于等于1000
if __name__ == '__main__': article = OschinaArticle() main_url = "https://www.oschina.net/blog?classification=428640" min_read_count = 1000 article.run(main_url, min_read_count)
控制台日志打印如下:
写入到文件中的内容如下:
你以为到这里就完了吗,no, no, no.............,通过上述方式只能获取到首页的文章,如果想获取更多的文章怎么办?开源中国的博客文章列表没有分页,是通过滑动鼠标滚轮来获取更多的页,可是人家的地址导航栏却没有丝毫没有变动,但是可以通过 F12 来看呀,按 F12 后,通过 NetWork 来查看相关的请求和响应情况:
通过滚动几下鼠标滚轮之后,可以发现请求的 URL 还是有规律的:
https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajax https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=2&type=ajax https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=3&type=ajax https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=4&type=ajax https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=5&type=ajax
可以看到除了 p 的参数值不同的话,其他的都相同,p 就是分页标识,p=2就表示第二页,p=3就等于第三页,以此类推,就可以获取到更多的文章啦:
def main(self, min_read_count, page_size): # 首页 URL self.log.info("首页##########################") main_url = "https://www.oschina.net/blog?classification=428640" self.run(main_url, min_read_count) # 第2页到第page_size页 for page in range(2, page_size): self.log.info("第 {0} 页##########################".format(str(page))) page_url = "https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=" + str(page) + "&type=ajax" self.run(page_url, min_read_count) time.sleep(2)
测试:
if __name__ == '__main__': article = OschinaArticle() # 获取到20页的相关文章,并且阅读数要大于等于1000 article.main(1000, 21)
日志控制台打印如下:
写到文件中如下:
可以看到,在 1-20 页中,阅读数大于等 1000 的文章有 114 篇,之后就可以 copy URL 到地址栏进行阅读啦....................
完整代码如下:
文章实体类:
"""文章实体类@authon:tsmyk0715"""class Article: def __init__(self, title, url, content="", read_cnt=0): """ 文章类构造方法 :param title:文章标题 :param url: 文章 URL :param content: 文章内容 :param read_cnt: 文章阅读数 """ self.title = title self.url = url self.content = content self.read_cnt = read_cnt def __str__(self): return u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(self.title, self.read_cnt, self.url)
OschinaArticle 处理逻辑类:
# -*- coding:utf-8 -*-import requestsfrom bs4 import BeautifulSoupimport loggingimport timefrom Article import Article""" 爬取开源中国上的文章,且阅读数大于等于1000"""class OschinaArticle: def __init__(self): self.log = logging self.log.basicConfig(level=logging.INFO) self.file_line_num = 1 def getSoup(self, url): """ 根据 url 获取 BeautifulSoup 对象 """ headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "Host": "www.oschina.net"} response = requests.get(url, headers=headers) return BeautifulSoup(response.text, "html.parser") def get_articles(self, url): article_list = [] beautiful_soup = self.getSoup(url) self.log.info(u"开始解析 HTML 页面...") articles_div = beautiful_soup.find_all("div", class_="item blog-item") for article_div in articles_div: content_div = article_div.find("div", class_="content") header_div = content_div.find("a", class_="header") # 文章URL url = header_div["href"] # 文章标题 title = header_div["title"] # 文章描述 description_str = content_div.find("div", class_="description").find("p", class_="line-clamp") if description_str is None: continue description = description_str.text # 文章阅读数 read_count_div = content_div.find("div", class_="extra").find("div", class_="ui horizontal list").find("div", class_="item") # find_next_sibling 获取兄弟节点 read_count_i = read_count_div.find_next_sibling("div", class_="item").find_next_sibling("div", class_="item") read_count = read_count_i.getText() __article = Article(title, url, description, read_count) article_list.append(__article) # self.log.info(u"文章:标题《{0}》,阅读数:{1},链接:{2}".format(title, read_count, url)) return article_list def handler_read_count(self, article_list): """ 处理阅读数:把 K 转换为 1000 :param article_list:文章列表 """ if article_list is None or len(article_list) == 0: self.log.info(u"文章列表为空...") return for article in article_list: read_count_str = article.read_cnt.strip() read_count = 0 if isinstance(read_count_str, str): if read_count_str.endswith("K"): read_count_str = read_count_str[:-1] # 去掉K read_count = int(float(read_count_str) * 1000) else: read_count = int(read_count_str) article.read_cnt = read_count def get_article_by_read_count_sort(self, article_list, min_read_cnt): """ 获取大于等于指定阅读数的文章信息, 并按照阅读数从高到低排序 :param article_list: 文章列表 :param minx_read_cnt: 最小阅读数 :return: """ if article_list is None or len(article_list) == 0: self.log.info(u"文章列表为空...") return article_list_return = [] for article in article_list: if article.read_cnt >= min_read_cnt: article_list_return.append(article) article_list_return.sort(key=lambda Article: Article.read_cnt, reverse=True) return article_list_return def write_file(self, article_list, file_path): file = open(file_path + "/articles.txt", "a") for article in article_list: _article_str = str(article) file.write("(" + str(self.file_line_num) + ")" + _article_str) file.write("\n") file.write("--------------------------------------------------------------------------------------------------------------------------------------------------------") file.write("\n") self.file_line_num += 1 time.sleep(0.2) # 休眠 200 毫秒 file.close() def run(self, url, min_read_count): # 获取所有文章 article_list = self.get_articles(url) # 对阅读数进行处理 self.handler_read_count(article_list) # 筛选阅读数大于等于指定值,并按阅读数从高到低排序 _list = self.get_article_by_read_count_sort(article_list, min_read_count) # 写文件 self.write_file(_list, "G:/python") # 打印控制台 for a in _list: self.log.info(a) def main(self, min_read_count, page_size): # 首页 URL self.log.info("首 页##########################") main_url = "https://www.oschina.net/blog?classification=428640" self.run(main_url, min_read_count) # 第2页到第page_size页 for page in range(2, page_size): self.log.info("第 {0} 页##########################".format(str(page))) page_url = "https://www.oschina.net/blog/widgets/_blog_index_recommend_list?classification=428640&p=" + str(page) + "&type=ajax" self.run(page_url, min_read_count) time.sleep(2)if __name__ == '__main__': article = OschinaArticle() # 获取到20页的相关文章,并且阅读数要大于等于1000 article.main(1000, 21)
结果如下:
(1)文章:标题《权限设计的杂谈》,阅读数:6400,链接:https://my.oschina.net/cloudcross/blog/1920706
------------------------------------------------------------------------------------------------------------------------- (2)文章:标题《Spring核心——纯Java运行与@Bean》,阅读数:5300,链接:https://my.oschina.net/chkui/blog/1861819 ---------------------------------------------------------------------------------------------------------------------------------------- (3)文章:标题《网站HTTP升级HTTPS完全配置手册》,阅读数:5200,链接:https://my.oschina.net/powertoolsteam/blog/1862967 ------------------------------------------------------------------------------------------------------------------------------------------------- (4)文章:标题《前两天网站访问慢的问题定位过程以及最终解决办法》,阅读数:5100,链接:https://my.oschina.net/javayou/blog/1928719 ------------------------------------------------------------------------------------------------------------- (5)文章:标题《如何优雅的使用和理解线程池》,阅读数:3800,链接:https://my.oschina.net/crossoverjie/blog/1919139 ---------------------------------------------------------------------------------------------------------------------------------------- (6)文章:标题《从小程序的安全说起》,阅读数:3500,链接:https://my.oschina.net/qixiaobo025/blog/1924401 ------------------------------------------------------------------------------------------------------------------------------------------ (7)文章:标题《使用Python分析《我不是药神》豆瓣电影短评》,阅读数:3300,链接:https://my.oschina.net/zhanglikun/blog/1845888 ------------------------------------------------------------------------------------------------------------------------------------------ (8)文章:标题《J2Cache 和普通缓存框架有何不同,它解决了什么问题?》,阅读数:3200,链接:https://my.oschina.net/javayou/blog/1931381 -------------------------------------------------------------------------------------------------------------------------------------------- (9)文章:标题《J2Cache 和普通缓存框架有何不同,它解决了什么问题?》,阅读数:3200,链接:https://my.oschina.net/javayou/blog/1931381 ---------------------------------------------------------------------------------------------------------------------------------------------- (10)文章:标题《spring boot应用测试框架介绍》,阅读数:2900,链接:https://my.oschina.net/yangjianzhou/blog/1859103 ----------------------------------------------------------------------------------------------------------------------------------------------- (11)文章:标题《Spring核心——资源数据管理》,阅读数:2700,链接:https://my.oschina.net/chkui/blog/1920637 ------------------------------------------------------------------------------------------------------------------------------------------------- (12)文章:标题《ELK三大日志中间组件之 kibana操作手册》,阅读数:2700,链接:https://my.oschina.net/suventop/blog/1857283 ------------------------------------------------------------------------------------------------------------------------------------------------ (13)文章:标题《Dubbo服务发布之服务暴露&心跳机制&服务注册》,阅读数:2200,链接:https://my.oschina.net/LucasZhu/blog/1857584 ----------------------------------------------------------------------------------------------------------------------------------------------- (14)文章:标题《MySQL多版本并发控制机制(MVCC)-源码浅析》,阅读数:2100,链接:https://my.oschina.net/alchemystar/blog/1927425 ---------------------------------------------------------------------------------------------------------------------------------------------- (15)文章:标题《k8s Kubernetes v1.10.0 集群安装文档 &踩坑日记》,阅读数:1000,链接:https://my.oschina.net/suncf/blog/1932826 ---------------------------------------------------------------------------------------------------------------------------------------------- (16)文章:标题《k8s Kubernetes v1.10.0 集群安装文档 &踩坑日记》,阅读数:1000,链接:https://my.oschina.net/suncf/blog/1932826 ---------------------------------------------------------------------------------------------------------------------------------------------- (17)文章:标题《Docker for mac 安装 Istio》,阅读数:1000,链接:https://my.oschina.net/xbl/blog/1928983 ----------------------------------------------------------------------------------------------------------------------------------------------- (18)文章:标题《Redis 数据结构-字符串源码分析》,阅读数:1000,链接:https://my.oschina.net/mengyuankan/blog/1926320 ------------------------------------------------------------------------------------------------------------------------------------------------- (19)文章:标题《redis架构演变与redis-cluster群集读写方案》,阅读数:1000,链接:https://my.oschina.net/u/2600078/blog/1923696 ------------------------------------------------------------------------------------------------------------------------------------------------ (20)文章:标题《Dubbo 整合 Pinpoint 做分布式服务请求跟踪》,阅读数:1000,链接:https://my.oschina.net/yanpenglei/blog/1863383 ----------------------------------------------------------------------------------------------------------------------------------------------- (21)文章:标题《MyBatis源码解读之延迟加载》,阅读数:1000,链接:https://my.oschina.net/wenjinglian/blog/1857581 ----------------------------------------------------------------------------------------------------------------------------------------------- (22)文章:标题《前两天网站访问慢的问题定位过程以及最终解决办法》,阅读数:5100,链接:https://my.oschina.net/javayou/blog/1928719 ---------------------------------------------------------------------------------------------------------------------------------------------- (23)文章:标题《MySQL多版本并发控制机制(MVCC)-源码浅析》,阅读数:2100,链接:https://my.oschina.net/alchemystar/blog/1927425 ---------------------------------------------------------------------------------------------------------------------------------------------- (24)文章:标题《Docker for mac 安装 Istio》,阅读数:1000,链接:https://my.oschina.net/xbl/blog/1928983 ---------------------------------------------------------------------------------------------------------------------------------------------- (25)文章:标题《Dubbo服务调用——流程分析》,阅读数:1000,链接:https://my.oschina.net/LucasZhu/blog/1928494 ----------------------------------------------------------------------------------------------------------------------------------------------- (26)文章:标题《从小程序的安全说起》,阅读数:3500,链接:https://my.oschina.net/qixiaobo025/blog/1924401 ---------------------------------------------------------------------------------------------------------------------------------------------- (27)文章:标题《Redis 数据结构-字符串源码分析》,阅读数:1000,链接:https://my.oschina.net/mengyuankan/blog/1926320 ----------------------------------------------------------------------------------------------------------------------------------------------- (28)文章:标题《权限设计的杂谈》,阅读数:6400,链接:https://my.oschina.net/cloudcross/blog/1920706 ----------------------------------------------------------------------------------------------------------------------------------------------- (29)文章:标题《(亿级流量)分布式防重复提交token设计【史诗级】》,阅读数:2500,链接:https://my.oschina.net/u/2371923/blog/1921153 --------------------------------------------------------------------------------------------------------------------------------------------- (30)文章:标题《redis架构演变与redis-cluster群集读写方案》,阅读数:1000,链接:https://my.oschina.net/u/2600078/blog/1923696 --------------------------------------------------------------------------------------------------------------------------------------------- (31)文章:标题《基于swagger2的离线pdf和html文档生成》,阅读数:1000,链接:https://my.oschina.net/qixiaobo025/blog/1921568 --------------------------------------------------------------------------------------------------------------------------------------------- (32)文章:标题《如何优雅的使用和理解线程池》,阅读数:3800,链接:https://my.oschina.net/crossoverjie/blog/1919139 --------------------------------------------------------------------------------------------------------------------------------------------- (33)文章:标题《Spring核心——资源数据管理》,阅读数:2700,链接:https://my.oschina.net/chkui/blog/1920637 ---------------------------------------------------------------------------------------------------------------------------------------------- (34)文章:标题《Redission分布式锁源码解析》,阅读数:1000,链接:https://my.oschina.net/u/2313177/blog/1919810 -------------------------------------------------------------------------------------------------------------------------------------------- (35)文章:标题《How To Do It - HelloWorld 项目总结报告》,阅读数:1000,链接:https://my.oschina.net/greenlaw110/blog/1916863 ---------------------------------------------------------------------------------------------------------------------------------------- (36)文章:标题《Java 框架新贵入驻 TechEmpower Framework Benchmark》,阅读数:1000,链接:https://my.oschina.net/greenlaw110/blog/1863937 ----------------------------------------------------------------------------------------------------------------------------------------- (37)文章:标题《Dubbo 整合 Pinpoint 做分布式服务请求跟踪》,阅读数:1000,链接:https://my.oschina.net/yanpenglei/blog/1863383 -------------------------------------------------------------------------------------------------------------------------------------------- (38)文章:标题《Spring核心——纯Java运行与@Bean》,阅读数:5300,链接:https://my.oschina.net/chkui/blog/1861819 --------------------------------------------------------------------------------------------------------------------------------------------- (39)文章:标题《网站HTTP升级HTTPS完全配置手册》,阅读数:5200,链接:https://my.oschina.net/powertoolsteam/blog/1862967 ------------------------------------------------------------------------------------------------------------------------------------------- (40)文章:标题《使用Python分析《我不是药神》豆瓣电影短评》,阅读数:3300,链接:https://my.oschina.net/zhanglikun/blog/1845888 ---------------------------------------------------------------------------------------------------------------------------------------- (41)文章:标题《spring boot应用测试框架介绍》,阅读数:2900,链接:https://my.oschina.net/yangjianzhou/blog/1859103 --------------------------------------------------------------------------------------------------------------------------------------------- (42)文章:标题《ELK三大日志中间组件之 kibana操作手册》,阅读数:2700,链接:https://my.oschina.net/suventop/blog/1857283 ----------------------------------------------------------------------------------------------------------------------------------------------- (43)文章:标题《Spring Boot 中如何使用拦截器(十五)》,阅读数:1000,链接:https://my.oschina.net/wangxincj/blog/1862880 ----------------------------------------------------------------------------------------------------------------------------------------------- (44)文章:标题《Spring Cloud Gateway 接口文档聚合实现》,阅读数:1000,链接:https://my.oschina.net/giegie/blog/1859800 ------------------------------------------------------------------------------------------------------------------------------------------------ (45)文章:标题《Spring核心——JSR250与资源控制》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1858734 ---------------------------------------------------------------------------------------------------------------------------------------------- (46)文章:标题《使用VsCode搭建Java开发环境,创建springboot应用》,阅读数:1000,链接:https://my.oschina.net/qsyan/blog/1858378 ---------------------------------------------------------------------------------------------------------------------------------------------- (47)文章:标题《MyBatis源码解读之延迟加载》,阅读数:1000,链接:https://my.oschina.net/wenjinglian/blog/1857581 ----------------------------------------------------------------------------------------------------------------------------------------------- (48)文章:标题《关于Eureka 2.x,别再人云亦云了!》,阅读数:8900,链接:https://my.oschina.net/eacdy/blog/1844423 ---------------------------------------------------------------------------------------------------------------------------------------------- (49)文章:标题《花一天半写了个http暴力压测工具,每秒可轰出83万个http请求,支持pipeline》,阅读数:4700,链接:https://my.oschina.net/talenttan/blog/1843645 --------------------------------------------------------------------------------------------------------------------------------------------- (50)文章:标题《性能优化之永恒之道(1)(实时sql优化vs业务字段冗余vs离线计算)》,阅读数:3700,链接:https://my.oschina.net/u/2371923/blog/1841088 -------------------------------------------------------------------------------------------------------------------------------------------- (51)文章:标题《惊艳,Dubbo域名已改,也不再局限于Java!》,阅读数:2800,链接:https://my.oschina.net/javaroad/blog/1843305 -------------------------------------------------------------------------------------------------------------------------------------------- (52)文章:标题《Zookeeper入门看这篇就够了》,阅读数:2400,链接:https://my.oschina.net/u/3796575/blog/1845035 ---------------------------------------------------------------------------------------------------------------------------------------------- (53)文章:标题《[喵咪Liunx(7)]Ceph分布式文件共享解决方案》,阅读数:1000,链接:https://my.oschina.net/wenzhenxi/blog/1845710 --------------------------------------------------------------------------------------------------------------------------------------------- (54)文章:标题《Spring核心——FactoryBean》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1845123 --------------------------------------------------------------------------------------------------------------------------------------------- (55)文章:标题《Spring Boot搭建Web项目要点》,阅读数:1000,链接:https://my.oschina.net/woter/blog/1842970 ------------------------------------------------------------------------------------------------------------------------------------------- (56)文章:标题《 3个面试中遇到的问题》,阅读数:1000,链接:https://my.oschina.net/floor/blog/1841962 -------------------------------------------------------------------------------------------------------------------------------------------- (57)文章:标题《Spring核心——IOC处理器扩展》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1840824 -------------------------------------------------------------------------------------------------------------------------------------------- (58)文章:标题《RabbitMQ使用分析和高可用集群搭建》,阅读数:4700,链接:https://my.oschina.net/genghz/blog/1840262 ---------------------------------------------------------------------------------------------------------------------------------------------- (59)文章:标题《Spring Cloud Gateway 原生的接口限流该怎么玩》,阅读数:3200,链接:https://my.oschina.net/giegie/blog/1838560 ---------------------------------------------------------------------------------------------------------------------------------------------- (60)文章:标题《浅谈设计模式之建造者模式》,阅读数:2700,链接:https://my.oschina.net/lihaoshan/blog/1839623 ---------------------------------------------------------------------------------------------------------------------------------------------- (61)文章:标题《Spring核心——Bean的定义与控制》,阅读数:2200,链接:https://my.oschina.net/chkui/blog/1837039 ----------------------------------------------------------------------------------------------------------------------------------------------- (62)文章:标题《Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?》,阅读数:1000,链接:https://my.oschina.net/crossoverjie/blog/1840429 --------------------------------------------------------------------------------------------------------------------------------------------- (63)文章:标题《Spring Boot Admin 2 值得了解的新变化》,阅读数:1000,链接:https://my.oschina.net/giegie/blog/1839116 ---------------------------------------------------------------------------------------------------------------------------------------------- (64)文章:标题《【Jenkins】构建并部署SpringBoot》,阅读数:1000,链接:https://my.oschina.net/gmarshal/blog/1838776 ---------------------------------------------------------------------------------------------------------------------------------------------- (65)文章:标题《十分钟学会用docker部署微服务》,阅读数:1000,链接:https://my.oschina.net/u/3796575/blog/1838385 --------------------------------------------------------------------------------------------------------------------------------------------- (66)文章:标题《初体验Jenkins安装并进行Maven项目自动化部署》,阅读数:1000,链接:https://my.oschina.net/xshuai/blog/1837180 --------------------------------------------------------------------------------------------------------------------------------------------- (67)文章:标题《Tomcat启动慢问题,追根溯源,死磕到底》,阅读数:1000,链接:https://my.oschina.net/u/3896931/blog/1837148 -------------------------------------------------------------------------------------------------------------------------------------------- (68)文章:标题《从一份配置清单详解Nginx服务器配置》,阅读数:4700,链接:https://my.oschina.net/hansonwang99/blog/1835408 -------------------------------------------------------------------------------------------------------------------------------------------- (69)文章:标题《Elasticsearch 6.3 SQL功能使用案例分享》,阅读数:3500,链接:https://my.oschina.net/bboss/blog/1834375 ---------------------------------------------------------------------------------------------------------------------------------------------- (70)文章:标题《oAuth2 升级Spring Cloud Finchley.RELEASE踩坑分享 》,阅读数:2900,链接:https://my.oschina.net/giegie/blog/1834899 ------------------------------------------------------------------------------------------------------------------------------------------- (71)文章:标题《Spring核心——设计模式与IoC》,阅读数:1000,链接:https://my.oschina.net/chkui/blog/1835837 -------------------------------------------------------------------------------------------------------------------------------------------- (72)文章:标题《Spring Boot2.0 整合mybatis、分页插件、druid》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1835680 ----------------------------------------------------------------------------------------------------------------------------------------- (73)文章:标题《Spring boot整合ElasticSearch案例分享》,阅读数:1000,链接:https://my.oschina.net/bboss/blog/1835601 ---------------------------------------------------------------------------------------------------------------------------------------------- (74)文章:标题《MyBatis四大核心概念》,阅读数:1000,链接:https://my.oschina.net/waylau/blog/1833780 --------------------------------------------------------------------------------------------------------------------------------------------- (75)文章:标题《t-io 集群解决方案以及源码解析》,阅读数:3900,链接:https://my.oschina.net/zyw205/blog/1827495 --------------------------------------------------------------------------------------------------------------------------------------------- (76)文章:标题《为什么 PHP 程序员应该学习使用 Swoole》,阅读数:3700,链接:https://my.oschina.net/u/1244455/blog/1831238 ------------------------------------------------------------------------------------------------------------------------------------------- (77)文章:标题《Springboot 应用部署建议》,阅读数:1000,链接:https://my.oschina.net/seal90/blog/1828876 ------------------------------------------------------------------------------------------------------------------------------------------- (78)文章:标题《Intellij IDEA神器那些让人爱不释手的小技巧》,阅读数:7000,链接:https://my.oschina.net/samgege/blog/1823645 --------------------------------------------------------------------------------------------------------------------------------------------- (79)文章:标题《http2.0 --速度与激情》,阅读数:5200,链接:https://my.oschina.net/u/861562/blog/1823472 ------------------------------------------------------------------------------------------------------------------------------------------ (80)文章:标题《MySQL-性能优化-索引和查询优化》,阅读数:3800,链接:https://my.oschina.net/qrmc/blog/1822373 --------------------------------------------------------------------------------------------------------------------------------------------- (81)文章:标题《SpringBoot应用部署于外置Tomcat容器》,阅读数:2700,链接:https://my.oschina.net/hansonwang99/blog/1824245 ------------------------------------------------------------------------------------------------------------------------------------------- (82)文章:标题《Tomcat Session管理分析》,阅读数:2600,链接:https://my.oschina.net/OutOfMemory/blog/1825123 --------------------------------------------------------------------------------------------------------------------------------------------- (83)文章:标题《用t-io花5分钟写个udp玩玩,顺便发上100万条消息》,阅读数:2200,链接:https://my.oschina.net/talenttan/blog/1823774 --------------------------------------------------------------------------------------------------------------------------------------------- (84)文章:标题《世界杯快到了,联想,华为又搞出大动作了!》,阅读数:6500,链接:https://my.oschina.net/osczb/blog/1820317 ---------------------------------------------------------------------------------------------------------------------------------------------- (85)文章:标题《MySQL-性能优化-优化设计和设计原则》,阅读数:4200,链接:https://my.oschina.net/qrmc/blog/1819509 --------------------------------------------------------------------------------------------------------------------------------------------- (86)文章:标题《RESTFul 服务测试自动化的艺术 - TODO 服务篇》,阅读数:3600,链接:https://my.oschina.net/greenlaw110/blog/1821431 ----------------------------------------------------------------------------------------------------------------------------------------------- (87)文章:标题《Feign2.0用Apache的Httpclient发送请求并配置连接池》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1821684 ------------------------------------------------------------------------------------------------------------------------------------------ (88)文章:标题《从linux源码看socket的close》,阅读数:1000,链接:https://my.oschina.net/alchemystar/blog/1821680 --------------------------------------------------------------------------------------------------------------------------------------------- (89)文章:标题《Netty(一) SpringBoot 整合长连接心跳机制》,阅读数:1000,链接:https://my.oschina.net/crossoverjie/blog/1820353 ------------------------------------------------------------------------------------------------------------------------------------------- (90)文章:标题《Eureka2.0集群 高可用的认证服务实现与搭建》,阅读数:1000,链接:https://my.oschina.net/bianxin/blog/1819947 --------------------------------------------------------------------------------------------------------------------------------------------- (91)文章:标题《Why c++ coroutine?Why libgo?》,阅读数:4000,链接:https://my.oschina.net/yyzybb/blog/1817226 -------------------------------------------------------------------------------------------------------------------------------------------- (92)文章:标题《中国人自己的框架——蚂蚁金服RPC框架结构分析》,阅读数:1000,链接:https://my.oschina.net/u/3807747/blog/1819010 -------------------------------------------------------------------------------------------------------------------------------------------- (93)文章:标题《一场版本升级引发的性能血案的追凶过程》,阅读数:2700,链接:https://my.oschina.net/greenlaw110/blog/1815959 ------------------------------------------------------------------------------------------------------------------------------------------- (94)文章:标题《RPC框架实践之:Google gRPC》,阅读数:2700,链接:https://my.oschina.net/hansonwang99/blog/1815743 ---------------------------------------------------------------------------------------------------------------------------------------------- (95)文章:标题《OpenApi开放平台架构实践》,阅读数:1000,链接:https://my.oschina.net/u/2476168/blog/1815482 -------------------------------------------------------------------------------------------------------------------------------------------- (96)文章:标题《基于Docker搭建MySQL主从复制》,阅读数:3400,链接:https://my.oschina.net/u/3773384/blog/1810111 ----------------------------------------------------------------------------------------------------------------------------------------------- (97)文章:标题《使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架》,阅读数:2600,链接:https://my.oschina.net/greenlaw110/blog/1811714 --------------------------------------------------------------------------------------------------------------------------------------------- (98)文章:标题《深入浅出设计模式——从球赛中悟多例模式》,阅读数:1000,链接:https://my.oschina.net/jack90john/blog/1813483 -------------------------------------------------------------------------------------------------------------------------------------------- (99)文章:标题《理解 Dubbo SPI 扩展机制》,阅读数:1000,链接:https://my.oschina.net/j4love/blog/1813040 -------------------------------------------------------------------------------------------------------------------------------------------- (100)文章:标题《Intellij IDEA神器居然还有这些小技巧》,阅读数:13100,链接:https://my.oschina.net/samgege/blog/1808622 ----------------------------------------------------------------------------------------------------------------------------------------------- (101)文章:标题《秒杀架构实践》,阅读数:3700,链接:https://my.oschina.net/crossoverjie/blog/1809257 ---------------------------------------------------------------------------------------------------------------------------------------------- (102)文章:标题《利用Zipkin追踪Mysql数据库调用链》,阅读数:2400,链接:https://my.oschina.net/hansonwang99/blog/1807943 -------------------------------------------------------------------------------------------------------------------------------------------- (103)文章:标题《接口方法上的注解无法被@Aspect声明的切面拦截的原因分析》,阅读数:2100,链接:https://my.oschina.net/guangshan/blog/1808373 ---------------------------------------------------------------------------------------------------------------------------------------------- (104)文章:标题《Spring boot 前后台分离项目 怎么处理spring security 抛出的异常》,阅读数:1000,链接:https://my.oschina.net/liululee/blog/1808027 --------------------------------------------------------------------------------------------------------------------------------------------- (105)文章:标题《透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因》,阅读数:1000,链接:https://my.oschina.net/guangshan/blog/1807721 --------------------------------------------------------------------------------------------------------------------------------------------- (106)文章:标题《用t-io来写一个网页聊天室或客服是个怎样的体验》,阅读数:11400,链接:https://my.oschina.net/talenttan/blog/1806324 -------------------------------------------------------------------------------------------------------------------------------------------- (107)文章:标题《Spring Boot应用监控实战》,阅读数:4500,链接:https://my.oschina.net/hansonwang99/blog/1805402 --------------------------------------------------------------------------------------------------------------------------------------------- (108)文章:标题《Spring Boot 2.0.1 入门教程》,阅读数:1000,链接:https://my.oschina.net/u/3819492/blog/1805170 -------------------------------------------------------------------------------------------------------------------------------------------- (109)文章:标题《Quartz调度源码分析》,阅读数:3100,链接:https://my.oschina.net/OutOfMemory/blog/1800560 --------------------------------------------------------------------------------------------------------------------------------------------- (110)文章:标题《快速集成Elasticsearch Restful API案例分享》,阅读数:2600,链接:https://my.oschina.net/bboss/blog/1801273 --------------------------------------------------------------------------------------------------------------------------------------------- (111)文章:标题《SpringCloud 之 Zuul 源代码详细笔记》,阅读数:1000,链接:https://my.oschina.net/alexqdjay/blog/1802503 ---------------------------------------------------------------------------------------------------------------------------------------------- (112)文章:标题《Ubuntu 编译ffmpeg 实现GPU 转码》,阅读数:3400,链接:https://my.oschina.net/u/2950272/blog/1796874 ----------------------------------------------------------------------------------------------------------------------------------------------- (113)文章:标题《数据权限管理中心 - 基于mybatis拦截器实现》,阅读数:2700,链接:https://my.oschina.net/gmarshal/blog/1797026 ---------------------------------------------------------------------------------------------------------------------------------------------- (114)文章:标题《完全读懂Spring框架之AOP实现原理》,阅读数:2000,链接:https://my.oschina.net/guangshan/blog/1797461 -----------------------------------------------------------------------------------------------------------------------------------------------