目标

  • 获取所有文章名,链接,阅读人数,评论数
  • 以适合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/' + accountADDR = 'http://blog.csdn.net/'
start_page = 0with 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 += 1URL2 = URL + '/article/list/' + str(start_page)print URL2response = requests.get(URL2)html = BeautifulSoup(response.text, 'html.parser')# print htmlblog_list = html.select('.list_item_new > #article_list > .article_item')# check blog_listif not blog_list:print 'No blog_list'breakfor 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'

运行效果

与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)

脚本:获取CSDN文章的访问量相关推荐

  1. python使用BeautifulSoup获取csdn单个博客文章字数

      之前一直想统计每年博客大致写了多少字数,但是csdn中好像只有文章数统计,没有字数统计(或者是一直没有发现相关的功能).最近学习python的网络相关模块时,python关于网页读取及抓取网页内容 ...

  2. C2M : 全网首发CSDN文章搬迁到慕课的脚本 5000字 详细呕心沥血开发过程 文末有效果图与源码

    前段时间在慕课申请了一个认证作者 就是这个标志 (不要以为我放个慕课认证作者的截图是在ZB,其实我就是在ZB, 你能怎么滴我吧....哈哈哈...........) 申请了作者之后,就想着将csdn的 ...

  3. 爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)

    文章目录 前言 分析 获取文章链接.id 分析markdown文本 代码编写 执行测试 说在后面的话 前言 在IT首屈一指的交流平台上,我们可以看得到csdn在最近的一些进步和变化:如blink,文章 ...

  4. 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...

  5. CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他拥有的,而不是他会的.所以可以不学无数,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WE ...

  6. 微信公众号及CSDN文章爬取

    写在前面 最近刚开了自己的博客,就想着把原来写的一些文章都放到这里来. https://blog.liuzemei.com 准备做筛选,然后一篇篇的把微信公众号的文章复制过来的,结果发现 太多了,而且 ...

  7. CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...

    公众号后台回复"图书",了解更多号主新书内容 作者: 1_bit 原文链接:http://suo.im/5V1JpX 前言 文章抄袭在互联网中普遍存在,很多博主.号主深受其烦. 近 ...

  8. 【流量】一觉醒来发现CSDN博客访问量增加十倍!原来是这个原因

    想必点击来的同学都是想提高自己博文访问量的,而具体的方法相信你已经掌握了,此时我的博客访问量+1 咳咳,这样写就真的太扯淡了,毕竟咱也是搞技术的,虽然现在是流量之上,但是CSDN毕竟还是一个技术社区嘛 ...

  9. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

最新文章

  1. 这24个高频存储问题,你一定要知道!如何不停机,安全更换数据库?大厂都怎么做MySQL到Redis同步的?...
  2. 扒中台的“祖坟”!对不起,Supercell的“中台”,你学不会
  3. MySQL的八股文自述(持续更新)
  4. 编译安装SVN不结合apache
  5. PHP获取用户地址方法
  6. 2018牛客暑假多校二 D(贪心)
  7. 宁波python学习_python学习第五天
  8. Linux一定需要文件系统吗?
  9. 一个好的web前端开发者,是怎么学习的?
  10. 5-2 持久化的作用/5-3 RDB1/5-4 RDB2/5-5 RDB3
  11. 与TensorFlow类似的项目有哪些?TensorFlow的优缺点是什么?
  12. 技术支持和测试的区别_PlatON测试网升级至0.13.0版本并正式启用全新账户地址格式 | 云图双周报2020.07.0107.15...
  13. 定量数据和定性数据_定性数据:赋予大数据意义的上下文
  14. 软件工程投资回收率计算
  15. (附源码)node.js物资管理系统 毕业设计 071130
  16. 大厂智力题讲解,学它!!!!(一)
  17. RTB广告大数据时代 人才奇缺培养迫在眉睫
  18. PXE实现无人值守安装
  19. 制作仅在xy方向有周期性的夹层结构,且不使用约束平板
  20. XmlHttp是什么

热门文章

  1. 截取屏幕指定区域保存为BMP文件
  2. IntelliJ IDEA的使用操作链接
  3. 【Linux sshfs】sshfs将远程目录挂载到本地目录
  4. android正则表达式隐藏邮箱地址中间字符
  5. shell脚本安装mysql并安装一个小服务
  6. asp开发中存储过程应用全接触 _asp技巧
  7. ArcGIS JS API中切换页面后组件报Tried to register widget with id== but that id is already registered
  8. lambda--整理的部分网络博文
  9. React 应用的性能优化思路
  10. TCP/IP学习——利用主机IP与子网掩码计算网络号