使用python对csdn的博主文章进行爬取,期间又遇到了新的问题和旧的已经遇到过的问题。首先做一个笔记,免得以后遇到同样的问题时还得浪费时间和经历。

刚开始目的没那么明确,主要在于熟悉相关的规则及流程。采用的方式时正则表达式 + BeautifulSoup, 个人感觉正则表达时的好处时方便对数据进行过滤和筛选;BeautifulSoup则时专门用来处理xml文件的,它可以很方便的提取xml文件不同节点信息(包括节点的属性信息和参数值)。


  1. # author : sunzd
  2. # date : 2019/9/01
  3. # position : beijing
  4. from fake_useragent import UserAgent
  5. from bs4 import BeautifulSoup
  6. from urllib import request
  7. from urllib import error
  8. import re
  9. import time
  10. def html_request(url):
  11. if url is None:
  12. return
  13. print("download html is :{0}".format(url))
  14. #如果url包含中文,则需要进行编码
  15. #模拟浏览器行为
  16. headers = {'UserAgent': str(UserAgent().random)}
  17. req = request.Request(url, headers=headers)
  18. try:
  19. html = request.urlopen(req).read().decode('utf-8')
  20. except error.URLError as e:
  21. if hasattr(e, "code"):
  22. print(e.code)
  23. if hasattr(e, "reason"):
  24. print(e.reason)
  25. return None
  26. #print(html)
  27. return html
  28. def html_parser(url, html):
  29. if url is None or html is None:
  30. return
  31. # pattern = '<main>(.+?)</main>' #因为<main>后紧跟的时‘\n’因此需要忽略掉使用模式修正符re.S使'.'可以匹配任意字符
  32. # articles = re.compile(pattern, re.S).findall(html)
  33. # articles = articles[0]
  34. pattern_art = '<div class="article-item-box csdn-tracking-statistics" data(.+?)</div>'
  35. # print(articles)
  36. articles = re.compile(pattern_art, re.S).findall(html.replace('\n', ''))
  37. print(articles.__len__())
  38. for article in articles:
  39. soup = BeautifulSoup(article, 'html.parser')
  40. title = soup.find('a', attrs={'target': '_blank'})
  41. # print(title)
  42. print("文章题目:{0}\n文章类型:{1}".format(title.text.replace(' ', '').replace("原", "").replace("转", ""), title.span.text))
  43. print("文章链接:{0}".format(title.attrs['href']))
  44. infors = soup.find('div', attrs={'class': 'info-box d-flex align-content-center'})
  45. # for infor in infors.p.next_siblings: next_siblings : 因为不包括自己,因此会把第一个p节点信息去掉。
  46. for infor in infors.children:
  47. if infor == ' ': # ‘ ’空格也会识别为他的孩子,因此需要过滤掉
  48. continue
  49. # print("======{0}".format(infor))
  50. if infor.span: # 只需要<span >节点的信息
  51. print("{0}".format(infor.span.text))
  52. pattern_next = '<li class="js-page-next js-page-action ui-pager ui-pager-disabled">'
  53. next = re.compile(pattern_next).findall(html)
  54. # print(html)
  55. # print("是否为最后一页:{0}----{1}".format(len(next), next))
  56. if len(next) == 0:
  57. return 0
  58. else:
  59. return 0
  60. if __name__ == '__main__':
  61. name = 's2603898260'
  62. page = 1
  63. url = "https://blog.csdn.net/" + name + "/article/list/" + str(page) + '?'
  64. while page < 4:
  65. html = html_request(url)
  66. # print(html)
  67. next = html_parser(url, html)
  68. page += 1
  69. url = "https://blog.csdn.net/" + name + "/article/list/" + str(page) + '?'
  70. # if next != 0:
  71. # page += 1
  72. # url = "https://blog.csdn.net/" + name + "/article/list/" + str(page) + '?'
  73. #else:
  74. # print("finished")
  75. # url = None
  76. '''
  77. https://blog.csdn.net/s2603898260/article/details/100067370
  78. '''

爬去的结果信息仅仅做了打印处理。后续添加存储到文件的处理。

爬去的结果如下:

  1. C:\ProgramData\Anaconda3\python.exe D:/pycharm/workspace/spiderAnalysis/AI_pie/sunzd_csdn.py
  2. download html is :https://blog.csdn.net/s2603898260/article/list/1?
  3. 20
  4. 文章题目:Python中正则表达式简介
  5. 文章类型:原
  6. 文章链接:https://blog.csdn.net/s2603898260/article/details/100067370
  7. 2019-08-25 21:48:03
  8. 阅读数 19
  9. 评论数 0
  10. 文章题目:selectpollepoll之间的区别
  11. 文章类型:转
  12. 文章链接:https://blog.csdn.net/s2603898260/article/details/97536708
  13. 2019-07-27 18:13:12
  14. 阅读数 22
  15. 评论数 0
  16. 文章题目:如何实现自定义sk_buff数据包并提交协议栈
  17. 文章类型:原
  18. 文章链接:https://blog.csdn.net/s2603898260/article/details/92019175
  19. 2019-06-15 00:00:20
  20. 阅读数 54
  21. 评论数 0
  22. 文章题目:DHCP协议及其交互过程
  23. 文章类型:原
  24. 文章链接:https://blog.csdn.net/s2603898260/article/details/90547537
  25. 2019-05-25 15:52:23
  26. 阅读数 31
  27. 评论数 0
  28. 文章题目:交换机之三层交换理
  29. 文章类型:转
  30. 文章链接:https://blog.csdn.net/s2603898260/article/details/90489608
  31. 2019-05-23 22:44:45
  32. 阅读数 53
  33. 评论数 0
  34. 文章题目:交换机之vlan详解
  35. 文章类型:转
  36. 文章链接:https://blog.csdn.net/s2603898260/article/details/90489469
  37. 2019-05-23 22:34:32
  38. 阅读数 178
  39. 评论数 0
  40. 文章题目:指针与引用,值传递与地址传递的关系
  41. 文章类型:原
  42. 文章链接:https://blog.csdn.net/s2603898260/article/details/90417121
  43. 2019-05-21 22:43:20
  44. 阅读数 30
  45. 评论数 0
  46. 文章题目:数据结构(三):双向循环链表的函数实现
  47. 文章类型:原
  48. 文章链接:https://blog.csdn.net/s2603898260/article/details/90315926
  49. 2019-05-18 15:49:57
  50. 阅读数 13
  51. 评论数 0
  52. 文章题目:数据结构(二):线性表之链式存储函数实现
  53. 文章类型:原
  54. 文章链接:https://blog.csdn.net/s2603898260/article/details/90314798
  55. 2019-05-18 14:52:34
  56. 阅读数 10
  57. 评论数 0
  58. 文章题目:数据结构(一):线性表的顺序存储和链式存储
  59. 文章类型:原
  60. 文章链接:https://blog.csdn.net/s2603898260/article/details/90312257
  61. 2019-05-18 13:20:02
  62. 阅读数 18
  63. 评论数 0
  64. 文章题目:Linuxproc文件系统小记
  65. 文章类型:原
  66. 文章链接:https://blog.csdn.net/s2603898260/article/details/89681905
  67. 2019-04-29 20:24:09
  68. 阅读数 15
  69. 评论数 0
  70. 文章题目:第09课:GDB实用调试技巧(下)
  71. 文章类型:转
  72. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683723
  73. 2019-03-23 14:39:03
  74. 阅读数 7
  75. 评论数 0
  76. 文章题目:第08课:GDB实用调试技巧(上)
  77. 文章类型:转
  78. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683713
  79. 2019-03-23 14:38:58
  80. 阅读数 7
  81. 评论数 0
  82. 文章题目:第07课:GDB常用命令详解(下)
  83. 文章类型:转
  84. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683699
  85. 2019-03-23 14:38:53
  86. 阅读数 13
  87. 评论数 0
  88. 文章题目:第06课:GDB常用命令详解(中)
  89. 文章类型:转
  90. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683582
  91. 2019-03-23 14:38:47
  92. 阅读数 44
  93. 评论数 0
  94. 文章题目:第05课:GDB常用命令详解(上)
  95. 文章类型:转
  96. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683576
  97. 2019-03-23 14:38:19
  98. 阅读数 15
  99. 评论数 0
  100. 文章题目:第04课:使用VS管理开源项目
  101. 文章类型:转
  102. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683568
  103. 2019-03-23 14:38:12
  104. 阅读数 20
  105. 评论数 0
  106. 文章题目:第三课:GDB常用的调试命令概览
  107. 文章类型:转
  108. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683558
  109. 2019-03-23 14:38:02
  110. 阅读数 15
  111. 评论数 0
  112. 文章题目:第二课:启动GDB调试
  113. 文章类型:转
  114. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683543
  115. 2019-03-23 14:37:46
  116. 阅读数 23
  117. 评论数 0
  118. 文章题目:第一课:调试信息和调试理
  119. 文章类型:转
  120. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683528
  121. 2019-03-23 14:37:38
  122. 阅读数 25
  123. 评论数 0
  124. download html is :https://blog.csdn.net/s2603898260/article/list/2?
  125. 20
  126. 文章题目:GDB调试:Linux开发人员必备技能
  127. 文章类型:转
  128. 文章链接:https://blog.csdn.net/s2603898260/article/details/86683504
  129. 2019-03-23 14:37:24
  130. 阅读数 14
  131. 评论数 0
  132. 文章题目:python3爬虫五大模块之五:信息采集器
  133. 文章类型:原
  134. 文章链接:https://blog.csdn.net/s2603898260/article/details/88760206
  135. 2019-03-23 14:34:48
  136. 阅读数 101
  137. 评论数 0
  138. 文章题目:python3爬虫五大模块之四:网页解析器
  139. 文章类型:原
  140. 文章链接:https://blog.csdn.net/s2603898260/article/details/88759540
  141. 2019-03-23 14:00:55
  142. 阅读数 291
  143. 评论数 0
  144. 文章题目:python3爬虫五大模块之三:网页下载器
  145. 文章类型:原
  146. 文章链接:https://blog.csdn.net/s2603898260/article/details/88758555
  147. 2019-03-23 12:17:19
  148. 阅读数 100
  149. 评论数 0
  150. 文章题目:python3爬虫五大模块之二:URL管理器
  151. 文章类型:原
  152. 文章链接:https://blog.csdn.net/s2603898260/article/details/88758180
  153. 2019-03-23 11:59:04
  154. 阅读数 140
  155. 评论数 0
  156. 文章题目:python3爬虫五大模块之一:爬虫调度器
  157. 文章类型:原
  158. 文章链接:https://blog.csdn.net/s2603898260/article/details/88757023
  159. 2019-03-23 11:36:28
  160. 阅读数 310
  161. 评论数 0
  162. 文章题目:Windos下通过Wpcap抓包实现两个网卡桥接
  163. 文章类型:原
  164. 文章链接:https://blog.csdn.net/s2603898260/article/details/85067018
  165. 2018-12-18 16:43:02
  166. 阅读数 259
  167. 评论数 0
  168. 文章题目:Linux始套接字抓取底层报文
  169. 文章类型:原
  170. 文章链接:https://blog.csdn.net/s2603898260/article/details/85020006
  171. 2018-12-16 00:08:09
  172. 阅读数 865
  173. 评论数 0
  174. 文章题目:Linux网络编程:始套接字简介
  175. 文章类型:转
  176. 文章链接:https://blog.csdn.net/s2603898260/article/details/85019718
  177. 2018-12-15 23:18:45
  178. 阅读数 46
  179. 评论数 0
  180. 文章题目:macipudp头解析
  181. 文章类型:转
  182. 文章链接:https://blog.csdn.net/s2603898260/article/details/85019482
  183. 2018-12-15 22:48:53
  184. 阅读数 46
  185. 评论数 0
  186. 文章题目:IP头详解
  187. 文章类型:原
  188. 文章链接:https://blog.csdn.net/s2603898260/article/details/85019438
  189. 2018-12-15 22:43:39
  190. 阅读数 44
  191. 评论数 0
  192. 文章题目:Linux网卡驱动sk_buff内核源码随笔
  193. 文章类型:原
  194. 文章链接:https://blog.csdn.net/s2603898260/article/details/83448735
  195. 2018-10-27 19:33:41
  196. 阅读数 238
  197. 评论数 1
  198. 文章题目:图像处理之Canny边缘检测(一)
  199. 文章类型:转
  200. 文章链接:https://blog.csdn.net/s2603898260/article/details/80724816
  201. 2018-08-27 23:01:11
  202. 阅读数 86
  203. 评论数 0
  204. 文章题目:针对Autocad2014第二次安装不上的问题
  205. 文章类型:原
  206. 文章链接:https://blog.csdn.net/s2603898260/article/details/81463225
  207. 2018-08-06 23:21:40
  208. 阅读数 5699
  209. 评论数 0
  210. 文章题目:matlab纹理映射之地球
  211. 文章类型:原
  212. 文章链接:https://blog.csdn.net/s2603898260/article/details/81463073
  213. 2018-08-06 23:07:03
  214. 阅读数 365
  215. 评论数 0
  216. 文章题目:SNMP协议之序言
  217. 文章类型:原
  218. 文章链接:https://blog.csdn.net/s2603898260/article/details/81041731
  219. 2018-07-14 11:40:17
  220. 阅读数 111
  221. 评论数 1
  222. 文章题目:uboot命令简介
  223. 文章类型:原
  224. 文章链接:https://blog.csdn.net/s2603898260/article/details/80747431
  225. 2018-06-20 16:04:05
  226. 阅读数 100
  227. 评论数 0
  228. 文章题目:tornado2.2安装教程
  229. 文章类型:原
  230. 文章链接:https://blog.csdn.net/s2603898260/article/details/79519506
  231. 2018-03-11 20:30:30
  232. 阅读数 1349
  233. 评论数 2
  234. 文章题目:tar命令简介
  235. 文章类型:原
  236. 文章链接:https://blog.csdn.net/s2603898260/article/details/79435842
  237. 2018-03-04 12:37:54
  238. 阅读数 52
  239. 评论数 0
  240. 文章题目:find命令简介
  241. 文章类型:原
  242. 文章链接:https://blog.csdn.net/s2603898260/article/details/79435828
  243. 2018-03-04 12:35:15
  244. 阅读数 71
  245. 评论数 0
  246. download html is :https://blog.csdn.net/s2603898260/article/list/3?
  247. 7
  248. 文章题目:文件的描述符和重定向
  249. 文章类型:原
  250. 文章链接:https://blog.csdn.net/s2603898260/article/details/79435815
  251. 2018-03-04 12:31:58
  252. 阅读数 72
  253. 评论数 0
  254. 文章题目:containerof()函数简介
  255. 文章类型:原
  256. 文章链接:https://blog.csdn.net/s2603898260/article/details/79371024
  257. 2018-02-25 21:15:45
  258. 阅读数 15950
  259. 评论数 12
  260. 文章题目:vim编辑器设置
  261. 文章类型:原
  262. 文章链接:https://blog.csdn.net/s2603898260/article/details/79354248
  263. 2018-02-25 19:20:50
  264. 阅读数 193
  265. 评论数 0
  266. 文章题目:ubantu下载源详细目录
  267. 文章类型:原
  268. 文章链接:https://blog.csdn.net/s2603898260/article/details/79354253
  269. 2018-02-25 12:57:29
  270. 阅读数 285
  271. 评论数 0
  272. 文章题目:sqlite数据库的基本用法及C语言的API接口简介
  273. 文章类型:原
  274. 文章链接:https://blog.csdn.net/s2603898260/article/details/78480137
  275. 2017-11-08 16:20:27
  276. 阅读数 185
  277. 评论数 0
  278. 文章题目:C语言中volatileregisterconststaticexternauto关键字的作用
  279. 文章类型:转
  280. 文章链接:https://blog.csdn.net/s2603898260/article/details/78476555
  281. 2017-11-08 11:16:20
  282. 阅读数 284
  283. 评论数 0
  284. 文章题目:linux网络编程(一)
  285. 文章类型:原
  286. 文章链接:https://blog.csdn.net/s2603898260/article/details/78475106
  287. 2017-11-08 09:42:21
  288. 阅读数 155
  289. 评论数 0
  290. Process finished with exit code 0

python爬区csdn文章信息(原始稿)的更多相关文章

  1. [Python学习] 简单爬取CSDN下载资源信息

    这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...

  2. Python 爬取美团酒店信息

    事由:近期和朋友聊天,聊到黄山酒店事情,需要了解一下黄山的酒店情况,然后就想着用python 爬一些数据出来,做个参考 主要思路:通过查找,基本思路清晰,目标明确,仅仅爬取美团莫一地区的酒店信息,不过 ...

  3. Python爬取拉勾网招聘信息并写入Excel

    这个是我想爬取的链接:http://www.lagou.com/zhaopin/Python/?labelWords=label 页面显示如下: 在Chrome浏览器中审查元素,找到对应的链接: 然后 ...

  4. python爬取豆瓣视频信息代码

    目录 一:代码 二:结果如下(部分例子)   这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quote ...

  5. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  6. python 爬取豆瓣书籍信息

    继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...

  7. python爬取豆瓣电影信息数据

    题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...

  8. python爬取梦幻西游召唤兽资质信息(不包含变异)

    一.分析 1.爬取网站:https://xyq.163.com/chongwu/ 2.获取网页源码: request.get("https://xyq.163.com/chongwu/&qu ...

  9. python爬乌云dorps文章

    有时候翻看drops 无赖drops没有一个全部文章列表,所以就有了这个想法把所有文件标题链接都爬出来这样又直观又好找感兴趣的文章 #coding=utf-8 import re import url ...

随机推荐

  1. firewalld防火墙基础

    目录 一.firewalld 概述 二.firewalld与iptables 的区别 三.firewalld 区域概念 四.Firewalld数据处理流程 五.Firewalld检查数据包的源地址的规 ...

  2. 阿里面试Redis常考问题

    一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...

  3. MVVM窗体show的弹窗事件

    RestMatCutWin restMatCutWindow;//定义一个窗体的全局变量 private void RestMatCutWinExecute() { if (restMatCutWin ...

  4. Goland 这些技巧,学会开发效率翻倍!

    hi, 大家好,我是 hhf. <Goland 这些实操技巧,你可能还不会!>介绍了日常开发中一些比较好用的技巧.本篇文章继续介绍一些其他比较好用的技巧. 自定义结构 tag Goland ...

  5. MySQL学习07(规范化数据库设计)

    规范化数据库设计 当数据库比较复杂时我们需要设计数据库 糟糕的数据库设计 : 数据冗余,存储空间浪费 数据更新和插入的异常 程序性能差 良好的数据库设计 : 节省数据的存储空间 能够保证数据的完整性 ...

  6. pikachu PHP反序列化 XXE SSRF

    PHP反序列化在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 另外这个漏洞一般是在代码审计的时候发现的,在扫描或者黑盒测试的时候很难发现.1.序 ...

  7. xml的约束

    一.DTD约束xml 1.约束介绍 由于xml的标签由用户自己定义,因此在开发的时候,每个人都可以根据自己的需求来定义xml标签,这样导致项目中的xml难以维护,因此需要使用一定的规范机制来约束xml ...

  8. 题解 d

    传送门 写出来\(n^2\)就有81pts-- \(n^2\)的话枚举最后成为限制的是哪两个矩形,利用前缀和和二分\(n^3\)化\(n^2\)就行了 这题最无脑直接贪心的方法会有后效性 但实际上正解 ...

  9. Semaphore 的使用

    var workerSemphore = new Semaphore(0, 800000); var IsWorkThreadCreated = true; var workThread = new ...

  10. 如何选择Spring cloud和 Spring Boot对应的版本

    如何选择Spring cloud和 Spring Boot对应的版本 首先,我们进入Spring Cloud官网,查询Spring cloud的版本和对应的Spring Boot版本 打开Spring ...