Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

版权声明:转载请声明原文链接地址,谢谢! https://blog.csdn.net/weixin_42859280/article/details/85227996

Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的!

完整代码在最后。依据阅读数量进行降序输出!
还有代码截图(适用于不知道为啥出现错误的朋友)
运行结果截图,写入后的记事本截图都有。
都在最后!

把链接换成你的就可以直接使用啦!
我是以我的主页作为列子来实践的!
注意链接格式呦!
还有,访问量是大于阅读量的。
访问量=阅读量+访问主页次数
因为别人可能访问你,但是没有阅读你的文章!

先说一段吧,诉诉苦水。也是我忙碌了好久才解决的!
1,第一个就是这个东西,会让你的数据错位。最后跟正确数据总有不同!
而且每个人的主页都有这个人的链接:
在这里插入图片描述
在这里插入图片描述
你说气人不!
但是,我是借助列表来存储的。
那么,这样就好啦:
在这里插入图片描述
让列表输出第二个到最后一个
实现这个功能,通过切片来实现
自己不会,所以耽误好久!通过切片来就好啦!

nn = nn[1:]

其他就没啥啦!就是这个错位,也不知道什么原因!
最后找到啦,解决也费了点时间!
我添加了一个对文件进行写操作,就是把东西写入到记事本里面!
(但是,要写入的记事本要和.py文件在同一个路径之下!)
我的都在桌面!
在这里插入图片描述
代码的讲解就放在代码块里吧!

 ff = open('1.txt','a')#打开文件
        if n%10 == 0:#判断,进行多输入一个换行符号,为了美观!
            ff.write(titles[w]+' '+str(nn[w])+' \n\n')#写入你想写入的列表元素!
        else:
            ff.write(titles[w]+' '+str(nn[w])+' \n')#输入一个换行符号,为了美观!
        ff.close()#关闭文件!
        n += 1#不能一直换行呀,找个变量来!

其他的就是一些正则表达式啦,不会的就直接使用吧!
代码:

import requests
import re
sum = 0
pages = 10
x = 1
nn = []
mm = []
base_url = "https://blog.csdn.net/weixin_42859280/article/list/"
print('\n-------------------------下面是原创的-------------------------\n')
for x in range(pages):
    w = 0
    r = requests.get(base_url+str(x+1)+'?t=1&orderby=ViewCount')
    titles = re.findall(r'<span class="article-type type-.*?">\n.*?</span>\n(.*?)</a>', r.content.decode(), re.MULTILINE)
    visits = re.findall( r'<span class="read-num">阅读数:(.*?)</span>', r.content.decode())
    mm = re.findall( r'<span class="read-num">评论数:(.*?)</span>', r.content.decode())
    nn = [int(x) for x in visits] #将阅读数转换为数字
    nn = nn[1:]
    mm = mm[1:]
    n = 1
    for x, y, z in zip(titles, nn,mm):
        ff = open('1.txt','a')
        if n%10 == 0:
            ff.write(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w]+' \n\n')
        else:
            ff.write(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w]+' \n')
        ff.close()
        n += 1
        #if int(nn[w]) > 1000:#可以进行筛选输出!
        #if int(mm[w]) > 0:#可以进行筛选输出!
        print(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w])
        sum += int(nn[w])
        w+=1
print('\n-------------------------下面是转载的-------------------------\n')
pages = 11
x = 1
nn = []
mm = []
base_url = "https://blog.csdn.net/weixin_42859280/article/list/"
for x in range(pages):
    w = 0
    r = requests.get(base_url+str(x+1)+'?t=2&orderby=ViewCount')
    titles = re.findall(r'<span class="article-type type-.*?">\n.*?</span>\n(.*?)</a>', r.content.decode(), re.MULTILINE)
    visits = re.findall( r'<span class="read-num">阅读数:(.*?)</span>', r.content.decode())
    mm = re.findall( r'<span class="read-num">评论数:(.*?)</span>', r.content.decode())
    nn = [int(x) for x in visits] #将阅读数转换为数字
    nn = nn[1:]
    mm = mm[1:]
    n = 1
    for x, y, z in zip(titles, nn,mm):
        ff = open('2.txt','a')
        if n%10 == 0:
            ff.write(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w]+' \n\n')
        else:
            ff.write(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w]+' \n')
        ff.close()
        n += 1
        #if int(nn[w]) > 1000:#可以进行筛选输出!
        #if int(mm[w]) > 0:#可以进行筛选输出!
        print(titles[w]+' 阅读数:'+str(nn[w])+' 评论数:'+mm[w])
        sum += int(nn[w])
        w+=1
print("总阅读量:"+str(sum))

代码截图:
(1):
adow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mjg1OTI4MA==,size_16,color_FFFFFF,t_70)
(2):
_FFFFFF,t_70)
执行结果:
(1):
在这里插入图片描述
(2):
在这里插入图片描述
被写入文本截图:
原创:
在这里插入图片描述
转载:
在这里插入图片描述

OK,有问题欢迎来留言讨论!
关于这个方面,我写的还有别的爬虫:
功能和这个有不同!
https://blog.csdn.net/weixin_42859280/article/details/85175854
欢迎留言讨论!

猜你喜欢

转载自blog.csdn.net/weixin_42859280/article/details/85227996