脚本:获取CSDN文章的访问量
目标
- 获取所有文章名,链接,阅读人数,评论数
- 以适合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文章的访问量相关推荐
- python使用BeautifulSoup获取csdn单个博客文章字数
之前一直想统计每年博客大致写了多少字数,但是csdn中好像只有文章数统计,没有字数统计(或者是一直没有发现相关的功能).最近学习python的网络相关模块时,python关于网页读取及抓取网页内容 ...
- C2M : 全网首发CSDN文章搬迁到慕课的脚本 5000字 详细呕心沥血开发过程 文末有效果图与源码
前段时间在慕课申请了一个认证作者 就是这个标志 (不要以为我放个慕课认证作者的截图是在ZB,其实我就是在ZB, 你能怎么滴我吧....哈哈哈...........) 申请了作者之后,就想着将csdn的 ...
- 爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)
文章目录 前言 分析 获取文章链接.id 分析markdown文本 代码编写 执行测试 说在后面的话 前言 在IT首屈一指的交流平台上,我们可以看得到csdn在最近的一些进步和变化:如blink,文章 ...
- 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图
以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...
- CSDN文章点赞、收藏、评论后到底发生了什么?简要分析HTTP交互机制
作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他拥有的,而不是他会的.所以可以不学无数,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WE ...
- 微信公众号及CSDN文章爬取
写在前面 最近刚开了自己的博客,就想着把原来写的一些文章都放到这里来. https://blog.liuzemei.com 准备做筛选,然后一篇篇的把微信公众号的文章复制过来的,结果发现 太多了,而且 ...
- CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
公众号后台回复"图书",了解更多号主新书内容 作者: 1_bit 原文链接:http://suo.im/5V1JpX 前言 文章抄袭在互联网中普遍存在,很多博主.号主深受其烦. 近 ...
- 【流量】一觉醒来发现CSDN博客访问量增加十倍!原来是这个原因
想必点击来的同学都是想提高自己博文访问量的,而具体的方法相信你已经掌握了,此时我的博客访问量+1 咳咳,这样写就真的太扯淡了,毕竟咱也是搞技术的,虽然现在是流量之上,但是CSDN毕竟还是一个技术社区嘛 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
最新文章
- 这24个高频存储问题,你一定要知道!如何不停机,安全更换数据库?大厂都怎么做MySQL到Redis同步的?...
- 扒中台的“祖坟”!对不起,Supercell的“中台”,你学不会
- MySQL的八股文自述(持续更新)
- 编译安装SVN不结合apache
- PHP获取用户地址方法
- 2018牛客暑假多校二 D(贪心)
- 宁波python学习_python学习第五天
- Linux一定需要文件系统吗?
- 一个好的web前端开发者,是怎么学习的?
- 5-2 持久化的作用/5-3 RDB1/5-4 RDB2/5-5 RDB3
- 与TensorFlow类似的项目有哪些?TensorFlow的优缺点是什么?
- 技术支持和测试的区别_PlatON测试网升级至0.13.0版本并正式启用全新账户地址格式 | 云图双周报2020.07.0107.15...
- 定量数据和定性数据_定性数据:赋予大数据意义的上下文
- 软件工程投资回收率计算
- (附源码)node.js物资管理系统 毕业设计 071130
- 大厂智力题讲解,学它!!!!(一)
- RTB广告大数据时代 人才奇缺培养迫在眉睫
- PXE实现无人值守安装
- 制作仅在xy方向有周期性的夹层结构,且不使用约束平板
- XmlHttp是什么
热门文章
- 截取屏幕指定区域保存为BMP文件
- IntelliJ IDEA的使用操作链接
- 【Linux sshfs】sshfs将远程目录挂载到本地目录
- android正则表达式隐藏邮箱地址中间字符
- shell脚本安装mysql并安装一个小服务
- asp开发中存储过程应用全接触 _asp技巧
- ArcGIS JS API中切换页面后组件报Tried to register widget with id== but that id is already registered
- lambda--整理的部分网络博文
- React 应用的性能优化思路
- TCP/IP学习——利用主机IP与子网掩码计算网络号