#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import re
import datetime
import requests url_name_str='''朱子超 https://www.cnblogs.com/heroknot/
赵嘉豪 https://www.cnblogs.com/zhoajiahao/
巩景云 https://www.cnblogs.com/gongjingyun123--/
李琦 https://www.cnblogs.com/1naonao/
潘立府 https://www.cnblogs.com/plf-Jack/
胡凯琴 https://www.cnblogs.com/863652104kai/
雷俊 https://www.cnblogs.com/lucky75/
刘闯 https://www.cnblogs.com/miaowugulu/
毛毅智 https://www.cnblogs.com/acate/
葛林丽 https://www.cnblogs.com/geyatou322/
朱缘应 https://www.cnblogs.com/zhuyuanying123--/
雷鸣 https://www.cnblogs.com/leimingqq2/
赵刚 https://www.cnblogs.com/zhaogang0104/
吴锡 https://www.cnblogs.com/ZDQ1/
张岩 https://www.cnblogs.com/zuihoudebieli/
高化焱 https://www.cnblogs.com/gaohuayan/
孔凡平 https://www.cnblogs.com/WilliamKong94/
王强 https://www.cnblogs.com/bruce123/
杨文益 https://www.cnblogs.com/pythonywy/
伍开日 https://www.cnblogs.com/clarence203/
朱竹平 https://www.cnblogs.com/Hades123/
周瑞星 https://www.cnblogs.com/zrx19960128/
许长义 https://www.cnblogs.com/xcyandwxl/
储皖浏 https://www.cnblogs.com/chuwanliu/
陈石 https://www.cnblogs.com/chencharry/
徐浩 https://www.cnblogs.com/einsam/
吴奇宇 https://www.cnblogs.com/blog5434/
张天承 https://www.cnblogs.com/bladecheng/
赵志强 https://www.cnblogs.com/wsxiaoyao/
朱健 https://www.cnblogs.com/masterjian924/
魏义军 https://www.cnblogs.com/Dr-wei/
曹降祥 https://www.cnblogs.com/fengxuemuyangren/
陈跃春 https://www.cnblogs.com/chenych/
黄云 https://www.cnblogs.com/yellowcloud/
段力钢 https://www.cnblogs.com/raynduan/
刘金 https://www.cnblogs.com/itboy-newking/
''' def get_name_url_dict():
"""读取文件"""
if not os.path.exists('博客地址.txt'):
with open('博客地址.txt', 'w', encoding='utf8') as fw:
fw.write(url_name_str)
fw.flush()
print('写入文件成功...') with open('博客地址.txt', 'r', encoding='utf8') as fr:
name_urls = fr.readlines() name_url_dict = dict()
for name_url in name_urls:
name_url_split = name_url.split() name = name_url_split[0]
url = name_url_split[1] name_url_dict[name] = url print(f'同学数:{len(name_url_dict)}') return name_url_dict def request_next_url_data(next_url, url_list):
"""请求下一个网页"""
next_response = requests.get(next_url)
next_data = next_response.text
next_url_list = re.findall('href="(.*?)">(.*?)</a>', next_data) url_list.extend(next_url_list)
re_next_url = re.findall('<a href="(https://www.cnblogs.com/.{0,30}/default\.html\?page=\d+)">下一页</a>', next_data)
if re_next_url:
re_next_url = re_next_url[0]
request_next_url_data(re_next_url, url_list) return url_list def for_every_name_urls(name_url_dict):
"""循环爬取所有人的博客信息"""
s_sum = '' for name, home_url in name_url_dict.items():
# 拼接主页
s_sum = f'{s_sum}{name} {home_url}\n'
print(name, home_url) # 获取第一页的内容
response = requests.get(home_url)
data = response.text
url_list = re.findall('href="(.*?)">(.*?)</a>', data) # 判断是否存在下一页
next_url = re.findall('[^;]<a href="(https://www.*?/default\.html\?page=\d+)">下一页</a>', data)
if next_url:
next_url = next_url[0]
url_list = request_next_url_data(next_url, url_list) # 去重处理
url_set = set()
for url in url_list:
if url[0].startswith(f'{home_url}p/') and url[0].endswith('html'):
url_set.add(url)
print(url_set)
for url in url_set:
s = f'{name} {url[0]} {url[1]}'
s_sum = f'{s_sum}{s}\n' s_sum = f'{s_sum}\n' return s_sum def save_file(s_sum):
day_time = str(datetime.datetime.now()).split(' ')[0]
f = open(f'{day_time}-py9博客情况汇总.txt', 'w', encoding='utf8')
f.write(s_sum)
f.close() if __name__ == '__main__':
name_url_dict = get_name_url_dict()
s_sum = for_every_name_urls(name_url_dict)
print(s_sum)
save_file(s_sum)

Python之py9-py9博客情况获取的更多相关文章

  1. python实现文章或博客的自动摘要(附java版开源项目)

    python实现文章或博客的自动摘要(附java版开源项目) 写博客的时候,都习惯给文章加入一个简介.现在可以自动完成了!TF-IDF与余弦相似性的应用(三):自动摘要 - 阮一峰的网络日志http: ...

  2. 用python爬虫监控CSDN博客阅读量

    作为一个博客新人,对自己博客的访问量也是很在意的,刚好在学python爬虫,所以正好利用一下,写一个python程序来监控博客文章访问量 效果 代码会自动爬取文章列表,并且获取标题和访问量,写入exc ...

  3. Python课程设计 搭建博客

    安装包Github地址 Python综合设计 233博客 注意还有个email文件是需要填入自己信息的,比如最高权限账号和要发送邮件的账号密码 请安装Python2.7环境,本服务器所用环境为 设置环 ...

  4. python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中

    原文地址: python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中

  5. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  6. python+selenium之悠悠博客学习笔记

    1 Python之自动化测试框架selenium学习 offical website 悠悠之selenium浅谈·博客园 悠悠软件测试系列 1.1 基础环境准备 1.1.1 python包下载工具的安 ...

  7. Python 爬取CSDN博客频道

    初次接触python,写的很简单,开发工具PyCharm,python 3.4很方便 python 部分模块安装时需要其他的附属模块之类的,可以先 pip install wheel 然后可以直接下载 ...

  8. 使用原生 python 造轮子搭建博客

    这篇用来 记录一个 从零开始的 博客搭建,希望坚持下去,因为python 开发效率令人发指,所以会原生从零写 ORM ,Web 框架 前提是打好 异步 io 的基础, 使用异步,有一点要谨记,一旦开始 ...

  9. 用Python给你的博客加上水印

    之前写的博客里面用到的图片都没有加水印,今天才在别的网站上发现自己的博客居然一个字不动的出现在了别人的文章里,而且还不标注出处,简直醉了. 其实博客这种东西讲真我是很愿意让别人看得,因为自己写的也比较 ...

  10. Python 通用爬虫 和讯博客 scrapy

    目标站点需求分析 通用爬虫,获取和讯博客所有博文 涉及的库 scrapy,re,requests,mysql URL RULE 解析单页源码 保存到数据库 结果

随机推荐

  1. 【Windows】Win10 20H2版本 管理员身份问题

    问题描述: 从之前的1909版本升级过来的,在一开始就是管理员身份,升级之后还是管理员身份没错 但是打开一些软件又会开始提示是否安全,还有C盘访问权限警告. 解决办法: 参考方案地址 http://w ...

  2. HDMI和DP双屏幕连接,对于BIOS来说哪个优先级高——DP连接优先级高于HDMI

    最近被博导忽悠了,说是实验室的国家项目结项了,有几十万的资金没有花掉,于是每个人都有了1W的报销金额,由于是结项所用因此只能报销耗材.我这人呢,平时是绝对不占小便宜的,但这次是个大便宜,于是就有些没把 ...

  3. vscode下如何把缩进为2个空格的python项目改为4个空格的缩进

    最近在看老项目的代码,是python2.7年代的项目,那个时候很多的python项目都是使用2个空格,不过现在估计大多数人写python项目都是使用4个空格的了,而我看这两个空格的项目代码也是感觉十分 ...

  4. Python按条件删除Excel表格数据的方法

      本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法.   首先,我们来明确一下本文的具体需 ...

  5. blender-主要操作技巧

    E 或 G 或 S 之后 不在同一平面的 处理1切换正视图    alt + z 切换透视模式  s + z +0 变成同一平面

  6. 关于mysql配置文件中jdbc url 的记录

    版本不同 url不同 大同小异 基本就是不同参数配置的区别 maven 仓库地址 https://mvnrepository.com/artifact/mysql/mysql-connector-ja ...

  7. Android网页投屏控制从入门到放弃

    背景 业务需要采集在app上执行任务的整个过程,原始方案相对复杂,修改需要协调多方人员,因而考虑是否有更轻量级的方案. 原始需求: 记录完成任务的每一步操作(点击.滑动.输入等) 记录操作前后的截图和 ...

  8. zynq QSPI flash分区设置&启动配置

    需求: 一款基于zynq架构的产品,只有qspi flash,并没有其他的存储设备, 现在的要求固化某个应用程序app,设置开机启动, 但是根据厂家提供的sdk,编译出的镜像重启后,文件系统的内容都会 ...

  9. posix是什么都不知道,还好意思说你懂Linux?

    Linux开发者越来越多,但是仍然有很多人整不明白POSIX是什么.本文就带着大家来了解一下到底什么是POSIX,了解他的历史和重要性. 一.什么是posix? 1. 概念 POSIX:可移植操作系统 ...

  10. Win32_GDI_五星红旗绘制

    五星红旗画法 设置矩形长与高的比为3:2 把矩形分为四个相等的长方形 把左上角宽分为15份,高分为10份 定位大五角星圆心位置,x为宽的5份,y为高的5份 计算五角星五个点的坐标 void SetFi ...