经常在csdn上看博文,受益匪浅,然而现在想爬一下csdn的博主信息。

先说一下有关ajax技术:

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。

  • 组成:

基于XHTML和CSS标准的表示;

使用Document Object Model进行动态显示和交互;

使用XML和XSLT做数据交互和操作;

使用XML HttpRequest与服务器进行异步通信;

使用JavaScript绑定一切。

  • 描述:

Ajax是结合了Java技术、XML以及JavaScript等编程技术,可以让开发人员构建基于Java技术的Web应用,并打破了使用页面重载的管理。

Ajax技术使用非同步的HTTP请求,在Browser和Web Server之间传递数据,使Browser只更新部分网页内容而不重新载入整个网页。

Ajax是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加载,就可以动态地更新。使用Ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的Web用户界面

首先我选择的是云计算大数据这一栏的博主,点开这个标签之后拉右侧的下拉框,发现博文在不断的更新。但是按照平常的逻辑来说应该会有一个分页的选项框,或者说在加载的过程中搜索框的url会有规律的改变。但是,并没有。作为新手我也是一头雾水,不知道咋办,然后就f12打开开发者工具选xhr记录ajax请求,看到每一次下拉框拉到最底端的时候都会向服务器发送一个name为‘articles?type=more&category=home&shown_offset=‘开头的ajax请求

看一下这个请求的url,会发现只有shown_offset的值一直在变化,并且这里的shown_offset在上一个同开头名的请求的Response中 ,因此此类请求的网址前后都有联系,只需要第一个原始URL就能构造出接接下来的所有。然而观察发现这个请求的Response里面有我们需要的博文链接,只需要把每个Rseponse中的链接找出来即可

from urllib import request
import time
from bs4 import BeautifulSoup
import re
import xlwt
import json
title = []  # 标题
original = []  # 原创
fans = []  # 粉丝
like = []  # 喜欢
comment = []  # 评论
Visit = []  # 访问
integral = []  # 积分
ranking = []  # 排名
links = []
def get_url(url,count):try:if count <= 0:#爬到指定次数停止returncount = count-1res = url_open(url)        articles = json.loads(res)if articles['status']:need_data = articles['articles']if need_data:for item in need_data :htmls = url_open(str(item['url']))content(htmls)last_shown_offset = articles["shown_offset"]  # 获取最后一条数据的时间戳if last_shown_offset:time.sleep(1)get_url(START_URL.format(last_shown_offset),count)except Exception as e:print(e)print('"系统暂停60s,当前出问题的是{}".format(url)')time.sleep(5)  # 出问题之后,停止60s,继续抓取get_url(url)
def url_open(url):response_link = request.Request(url)cookie_str = '''Cookie: ARK_ID=JSdf38ff03b89606a56defa7a2f7d0b21ddf38; smidV2=20180925162251fdcebd0b484a86c5a091511b942c76cc0082f9060c3483580; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=1788*1*PC_VC; uuid_tt_dd=10_28867322940-1540539857519-396808; _ga=GA1.2.1172807431.1541726935; UM_distinctid=1670cf18fa61eb-0c5655b817ea5-b79183d-100200-1670cf18fa8c3; UN=qq_40821402; ADHOC_MEMBERSHIP_CLIENT_ID1.0=8a7001b5-1d6c-6e21-903a-1b13310ab597; tipShow=true; c_adb=1; dc_session_id=10_1543651026904.982529; SESSION=190cbbd6-402a-42c5-ace5-c3dc09dac940; UserName=qq_40821402; UserInfo=KnRdCMTcfcLyoWsBjzrRu%2FQa1vjgXB6sHGT2sMdhEl8OcmVvPw7aWsd1QsOwFEzyCBBO3NZ%2BVCnjmHcGUX4mntU7aIKnUDMoU4OFKYb5mLxM9yYCB0ctjH00idBHXjfi; UserToken=cf8778f3044c4e03b4426d405e250cc6; UserNick=qq_40821402; AU=2A3; BT=1543752072665; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1543718281,1543718312,1543752022,1543752076; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1543752076; dc_tos=pj3yqg'''response_link.add_header('cookie', cookie_str)response_link.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36')respon = request.urlopen(response_link).read().decode('utf-8', 'ignore')return(respon)def content(html):bs = BeautifulSoup(html, 'lxml')zz = bs.find('a', class_="follow-nickName").get_text()title.append(zz)qq = bs.find('span', class_="count").get_text()original.append(qq)ww = bs.find_all('span', class_="count")[1].get_text()fans.append(ww)ff = bs.find_all('span', class_="count")[2].get_text()like.append(ff)uu = bs.find_all('span', class_="count")[3].get_text()comment.append(uu)pat = ' <dd title="(.*?)">'result1 = re.compile(pat).findall(html)[0]Visit.append(result1)result2 = re.compile(pat).findall(html)[1]integral.append(result2)pat2 = '<dl title="(.*?)">'result3 = re.compile(pat2).findall(html)[0]ranking.append(result3)f = xlwt.Workbook()sheet_csdn = f.add_sheet('csdn数据', cell_overwrite_ok=True)title_text = ['原创', '粉丝', '喜欢', '评论', '访问', '积分', '排名']for i in range(0, len(title_text)):sheet_csdn.write(0, i, title_text[i])for r in range(0, len(title)):sheet_csdn.write(r + 1, 0, title[r])for q in range(0, len(original)):sheet_csdn.write(q + 1, 1, original[q])for e in range(0, len(fans)):sheet_csdn.write(e + 1, 2, fans[e])for t in range(0, len(like)):sheet_csdn.write(t + 1, 3, like[t])for y in range(0, len(comment)):sheet_csdn.write(y + 1, 4, comment[y])for u in range(0, len(Visit)):sheet_csdn.write(u + 1, 5, Visit[u])for c in range(0, len(ranking)):sheet_csdn.write(c + 1, 6, ranking[c])f.save('E:/csdn6.csv')
if __name__ =='__main__':baseUrl = "https://www.csdn.net/nav/"count = 5;category = "cloud"indexHtml = request.urlopen(baseUrl + category).read().decode('utf-8', 'ignore')bs1 = BeautifulSoup(indexHtml, 'lxml')aTag = bs1.find('ul', class_="feedlist_mod cloud")shownOffset = aTag.get('shown-offset')START_URL = "https://www.csdn.net/api/articles?type=more&category=newarticles&shown_offset={}"get_url(START_URL.format(shownOffset), count)

参考博文:https://blog.csdn.net/hihell/article/details/83349665

https://www.cnblogs.com/thomasbc/p/6650119.html

python3 爬csdn博主详情相关推荐

  1. 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)

    用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了...(附源码) 我们学习编程,在学习的时候,会有想把有用的知识点保存下来,我们可以把知识点的内容爬下来转变成pdf格式 ...

  2. CSDN博主排行榜上线!

    熬过了困苦的黑夜,算法小哥哥终于迎来了黎明的曙光,在与模型的无数次亲密"调戏"之后,模型终于给出了他想要的答案,与此同时,算法小哥哥的发际线又向资深迈进了一步. 就这样,CSDN博 ...

  3. 解决树莓派鼠标延迟/迟滞问题-转CSDN博主“Deiki”-sunziren

    解决树莓派鼠标延迟/迟滞问题-转CSDN博主"Deiki"-sunziren 参考文章: (1)解决树莓派鼠标延迟/迟滞问题-转CSDN博主"Deiki"-su ...

  4. 【整理自官方公开资料】CSDN博主排名影响因素

    我们都知道旧的排名系统是根据积分排名的. 而根据CSDN官方的消息,新的积分系统是在原来积分制的基础上,加上文章的收藏,分享,点赞,评论等数据权重,形成一个新的博客总排名体系. 新排名系统参考的部分指 ...

  5. 如何增加自己的文章在csdn的曝光量-参考CSDN博主排名更新公告

    前言 不知不觉已经在CSDN上3年,但是本人也是刚刚在CSDN上创作文章,成为博主没几天,我看了这几天文章的浏览数据不尽人意,时常开始反思是不是自己的文章不够好.毕竟都是理工科出身,文采水平有限,但是 ...

  6. csdn 博主排行榜

    没有入口,只能自己找入口 csdn 博主排行榜 https://blog.csdn.net/rank/list/total

  7. 运用爬虫给喜欢的csdn博主刷评论教程(超简单)

    每日分享: 人们看起来好像是有选择的,但这其实是一个错觉.只要你的思维及其受制约的模式控制着你的生活,你还会有什么选择?没有. 重要提示:第一天我大概刷了50个评论(用的同一句话,在同一篇文章刷的), ...

  8. 爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  9. python爬取文章保存_爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

最新文章

  1. Squid access.log 转发到其他syslog服务器(OSSIM)
  2. ICCV 2019 开源论文 | 基于元学习和AutoML的模型压缩新方法
  3. GDCM:gdcm::FilenameGenerator的测试程序
  4. 关于VS2012连接MySql数据库时无法选择数据源
  5. 异常作弊– Java 8 Lambdas
  6. 前端学习(3239):react生命周期setstate流程
  7. linux 内核入口地址,linux内核的加载地址和入口地址
  8. shell 使用eval重新计算变量的变量
  9. Chisel:一款基于HTTP的快速稳定TCPUDP隧道工具
  10. 价值1000元的微信二维码活码管理系统网站源码分享
  11. 毕设查重,避免雷区【划重点!!!】
  12. gitee码云安装和使用教程
  13. 高德地图JS添加海量点
  14. Oracle和Mysql的区别
  15. Android三种姿势带你玩转360度全景图功能
  16. Android 如何关闭Navigation Bar
  17. 单向链表—在单向链表的尾部插入一个元素
  18. bigemap卫星地图下载器的优势
  19. 高血糖的饮食注意事项
  20. 有限元——ANSYS求解悬臂梁均布载荷问题

热门文章

  1. win10打不开oracle,Win10下安装Oracle问题集锦
  2. 76.qt qml-QianWindow开源炫酷界面框架(支持白色暗黑渐变自定义控件均以适配)
  3. 18. python虚拟环境
  4. javase-jdk下载、安装、配置
  5. mysql8中only_full_group_by与mysql直接解压版本没有my.ini与数据库备份与备份时出错的解决办法
  6. 数字信号处理实验二:数字语音信号与频谱分析
  7. 【电机学复习笔记】第三章 直流电机
  8. MySQL数据库高级篇教程 B站康师傅笔记(持续更新)
  9. VS Code中如何关闭保存Go语言文件时自动去除未引用包的行为
  10. word涂改涂掉图片_关于涂改过的借条还有效吗--word范文资料