脚本:获取CSDN文章的访问量

原创 2017年08月06日 14:52:03

目标

  • 获取所有文章名,链接,阅读人数,评论数
  • 以适合pandas读取的格式存储之

分析

页面跳转

首页:http://blog.csdn.net/fontthrone?viewmode=list
第二页:http://blog.csdn.net/FontThrone/article/list/2
三四页以此类推
根据第二三四页的格式尝试http://blog.csdn.net/FontThrone/article/list/1
成功跳转:证明http://blog.csdn.net/fontthrone?viewmode=list = http://blog.csdn.net/FontThrone/article/list/1

那么获取不同的页面我们只需要通过跳转链接最后面的 数字来控制就好了,真是简单=- =

页面整体构成

这里写图片描述
页面构成(class)如图所示
- article_list
- - list_item article_item
- - - article_title 标题
- - - - h1
- - - - - link_title
- - - - - - a
- - - article_description 文章摘要
- - - article_manage
- - - - link_postdate 日期
- - - - link_view 阅读人数
- - - - link_comments 评论数
- - - - link_edit 编辑
- - - clear
我们首先获取每一个- article_list,然后通过循环获取每个list_item article_item中的信息

细节

  • 使用bs4 解析网页,减少了工作量
  • a标签中的href使用 [‘href’] 获取
  • 对于span中含有a标签+text的,获取text直接用正则进行获取
  • 注意编码:1. 网页获取内容的编码 1. py文件的默认编码

代码分解

获取具体信息的方法

  • 1.获取article_list
        html = BeautifulSoup(response.text, 'html.parser')
        blog_list = html.select('.list_item_new > #article_list > .article_item')
  • 2.获取article_title 以及文章链接
            blog_title = house.select('.link_title > a')[0].string.encode('utf-8')
            blog_title = str(blog_title.replace(' ', '').replace('\n', ''))
            blog_url = urljoin(ADDR, house.select('.link_title > a')[0]['href'])
  • 3.获取 link_view 阅读人数 and link_comments 评论数
            link_view = str(house.select('.article_manage > .link_view')[0])
            blog_people = re.search(r'\d+', re.search(r'\(\d+\)', link_view).group()).group()
            # 先获取span然后实用正则提取阅读人数

            link_comment = str(house.select('.article_manage > .link_comments')[0])
            blog_comment = re.search(r'\d+', re.search(r'\(\d+\)', link_comment).group()).group()
            # 先获取span然后实用正则提取评论数

写入CSV文件

import csv
# 引入类库
with open('info.csv', 'wb') as f:
    csv_writer = csv.writer(f, delimiter=',')
    # 创建-使用with,无需手动关闭
    csv_writer.writerow(['blog_title', 'blog_url', 'blog_people', 'blog_comment'])
    # 写入内列名,便于pandas使用(按行写入)

csv_writer.writerow([blog_title, blog_url,blog_people, blog_comment])
#按行写入 我们爬取的信息

CODE

真·CODE

初代机参考:http://blog.csdn.net/fontthrone/article/details/75287311

# - * - coding: utf - 8 -*-
#
# 作者:田丰(FontTian)
# 创建时间:'2017/8/5'
# 邮箱:fonttian@Gmaill.com
# CSDN:http://blog.csdn.net/fontthrone
#
from bs4 import BeautifulSoup
from urlparse import urljoin
import requests
import csv
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')

# account = str(raw_input('输入csdn的登录账号:'))
account = 'fontthrone'

URL = 'http://blog.csdn.net/' + account

ADDR = 'http://blog.csdn.net/'
start_page = 0

with open('info.csv', 'wb') as f:
    csv_writer = csv.writer(f, delimiter=',')
    csv_writer.writerow(['blog_title', 'blog_url', 'blog_people', 'blog_comment'])
    print 'starting'
    while True:
        start_page += 1
        URL2 = URL + '/article/list/' + str(start_page)
        print URL2
        response = requests.get(URL2)
        html = BeautifulSoup(response.text, 'html.parser')
        # print html
        blog_list = html.select('.list_item_new > #article_list > .article_item')
        # check blog_list
        if not blog_list:
            print 'No blog_list'
            break
        for house in blog_list:
            blog_title = house.select('.link_title > a')[0].string.encode('utf-8')
            blog_title = str(blog_title.replace(' ', '').replace('\n', ''))

            link_view = str(house.select('.article_manage > .link_view')[0])
            blog_people = re.search(r'\d+', re.search(r'\(\d+\)', link_view).group()).group()

            link_comment = str(house.select('.article_manage > .link_comments')[0])
            blog_comment = re.search(r'\d+', re.search(r'\(\d+\)', link_comment).group()).group()

            blog_url = urljoin(ADDR, house.select('.link_title > a')[0]['href'])

            csv_writer.writerow([blog_title, blog_url,blog_people, blog_comment])
    print 'ending'

运行效果

运行效果

获取的csv文件

与pandas结合,升级刷访问量脚本初代机

说明

本代码仅供学习参考,不建议使用该脚本进行访问量的刷新

CODE

# blog_url =[
#     'http://blog.csdn.net/fontthrone/article/details/76675684',
#     'http://blog.csdn.net/FontThrone/article/details/76652772',
#     'http://blog.csdn.net/FontThrone/article/details/76652762',
#     'http://blog.csdn.net/FontThrone/article/details/76652753',
#     'http://blog.csdn.net/FontThrone/article/details/76652257',
#     'http://blog.csdn.net/fontthrone/article/details/76735591',
#     'http://blog.csdn.net/FontThrone/article/details/76728083',
#     'http://blog.csdn.net/FontThrone/article/details/76727466',
#     'http://blog.csdn.net/FontThrone/article/details/76727412',
#     'http://blog.csdn.net/FontThrone/article/details/76695555',
#     'http://blog.csdn.net/fontthrone/article/details/75805923',
# ]

import pandas as pd
df1 = pd.DataFrame(pd.read_csv('info.csv'))

blog_url = list(df1['blog_url'])

补充

  • 一代半有了,二代机还会远吗?
  • 各位老铁,一波666走起,(滑稽.jpg)
版权声明:欢迎转载,共同学习,但请尊重版权,标明出处:http://blog.csdn.net/fontthrone

简单CSDN爬虫,实现博客访问量记录

简单CSDN爬虫,实现访问量记录
  • hurmishine
  • hurmishine
  • 2016年11月04日 13:53
  • 1014

脚本实现自动化增加CSDN博客的访问量

闲来无事,看看博客是否可以刷量,写了一个python脚本,采用了BeautifulSoup进行dom页面解析,抓取文章列表逐个刷新,效果还不错,有需要的拿走,不谢...
  • flykinghg
  • flykinghg
  • 2017年04月25日 19:43
  • 641

如何刷博客的访问量

当然,很多童鞋都喜欢刷自己的博客访问量,这样可以获得神奇的C币,可以兑换N and N的好东西。今天,博主普及大家的知识,当然,不可以学习以后乱搞,不然就是不正当的行为了。其实刷博客的访问量很简单,只...
  • cnyali_ljf
  • cnyali_ljf
  • 2016年07月14日 14:28
  • 2471

wordpress 记录文章被浏览的次数

//转自:http://wpsnipp.com/index.php/functions-php/track-post-views-without-a-plugin-using-post-meta/ ...
  • wang350
  • wang350
  • 2013年06月03日 14:17
  • 890

四十一、如何准确的统计文章浏览量(pv)

自己写的原创文章很想知道都有多少网友浏览过,单纯的显示次数并不能准确地反应真实浏览量,还需要解决一些意想不到的问题,本节我把刚刚完成的浏览量统计方案分享出来 请尊重原创,转载请注明来源网站www.s...
  • jiangjingxuan
  • jiangjingxuan
  • 2017年01月25日 11:57
  • 883

Python 自动刷博客浏览量

哈哈,今天的话题有点那什么了哈。咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧。思路来源今天很偶然的一个机会,听到别人在谈论现在的“刷量”行为,于是就激发了我的好奇心。然后看了下request...
  • Marksinoberg
  • Marksinoberg
  • 2016年05月26日 19:47
  • 18712

记一次实现统计访问量最高文章的功能

最近在公司做了一个新的需求:统计上周某几个系列文章中,阅读量最大的6篇文章。本来这些统计的功能,是要去找专门的统计,比如百度统计、友盟、谷歌等,但是我只有一天的开发时间,去研究第三方的统计指定某类文章...
  • zy_281870667
  • zy_281870667
  • 2017年09月05日 22:16
  • 196

博客访问量终于破10000了

絮絮叨叨的老年人
  • LJFPHP
  • LJFPHP
  • 2017年09月15日 21:40
  • 170

CSDN有效访问量判别机制分析

CSDN有效访问量判别机制分析由于近来csdn引入了伯乐制,博主写好的文章必须@伯乐,经过伯乐推荐才能在首页展示,所以顿时很多博主失去了写博客的动力。。。为了增加自己博客的曝光度,产生了刷访问量的想法...
  • u013190268
  • u013190268
  • 2015年11月03日 21:49
  • 6383

博客实现浏览量统计次数

由于网上参考的两篇文章讲的不是特别适合自己,在下载和开发的过程中遇到不少的坑,所以就在前辈的基础上进行整理知识点。参考1-在博客中实现浏览次数的统计-laravist参考2-Laravel 文章浏览数...
  • visiontime
  • visiontime
  • 2017年03月17日 19:39
  • 1035
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:脚本:获取CSDN文章的访问量
举报原因:
原因补充:

(最多只允许输入30个字)