脚本:获取CSDN文章的访问量
2017-08-06 14:52
239 查看
目标
获取所有文章名,链接,阅读人数,评论数以适合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_listhtml = 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'
运行效果
与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)
相关文章推荐
- 【Python脚本】-爬虫得到CSDN博客的文章访问量和评论量
- 对CSDN博客文章的访问量的质疑
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/03/05
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/01/19
- 获取csdn博客所有文章链接
- Jsoup获取csdn文章链接和标题的方法
- PYTHON 获取csdn的博客文章标题和描述
- 一个用Python写的 CSDN 批量文章分类修改脚本
- Python登录并获取CSDN博客所有文章列表
- 快速提高CSDN访问量 - 附脚本初代机
- Python爬虫自动获取CSDN博客收藏文章
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
- python获取csdn的访问量和排名+falcon画图
- 自动获取CSDN博客文章列表
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
- Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
- 看到一篇文章刷CSDN博客访问量,目前没有环境实现,抽空可以去跑跑看或者改为其他方式实现
- python模拟登录csdn并获取首页文章写入MySQL中(二)
- Exchangee 2010 获取邮箱的脚本执行方法-前一篇文章提到的脚本执行方法!
- Python3.X登录模拟CSDN,获取文章列表