上一篇文章中爬虫来获取廖老师python教程的url并加入搜索url功能,这一篇文章会爬取csdn大神july的所有博客的url,并实现搜索功能就像下面这样

请输入你要查询的知识点:Machine
Machine L & Deep Learning
http://blog.csdn.net/v_JULY_v/article/category/1061301
Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛:     http://blog.csdn.net/v_july_v/article/details/71598551
GAN之父在NIPS 2016上做的报告:两个竞争网络的对抗(含译文下载):     http://blog.csdn.net/v_july_v/article/details/60618425
如何从零起步学习AI:     http://blog.csdn.net/v_july_v/article/details/54561427
手把手教你搭建caffe及手写数字识别(Ubuntu下且附mac、纯通俗教程):     http://blog.csdn.net/v_july_v/article/details/53086367
教你从头到尾利用DQN自动玩flappy bird(全程命令提示,GPU+CPU版):     http://blog.csdn.net/v_july_v/article/details/52810219
基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成:     http://blog.csdn.net/v_july_v/article/details/52796239
没GPU也能玩梵高作画:Ubuntu tensorflow CPU版:     http://blog.csdn.net/v_july_v/article/details/52683959
教你从头到尾利用DL学梵高作画:GTX 1070 cuda 8.0 tensorflow gpu版:     http://blog.csdn.net/v_july_v/article/details/52658965
CNN笔记:通俗理解卷积神经网络:     http://blog.csdn.net/v_july_v/article/details/51812459
通俗理解LDA主题模型:     http://blog.csdn.net/v_july_v/article/details/41209515
从贝叶斯方法谈到贝叶斯网络:     http://blog.csdn.net/v_july_v/article/details/40984699
从拉普拉斯矩阵说到谱聚类:     http://blog.csdn.net/v_july_v/article/details/40738211
Adaboost 算法的原理与推导:     http://blog.csdn.net/v_july_v/article/details/40718799
最大熵模型中的数学推导:     http://blog.csdn.net/v_july_v/article/details/40508465
数据挖掘中所需的概率论与数理统计知识:     http://blog.csdn.net/v_july_v/article/details/8308762
从K近邻算法、距离度量谈到KD树、SIFT+BBF算法:     http://blog.csdn.net/v_july_v/article/details/8203674
[置顶]支持向量机通俗导论(理解SVM的三层境界):     http://blog.csdn.net/v_july_v/article/details/7624837
从决策树学习谈到贝叶斯分类算法、EM、HMM:     http://blog.csdn.net/v_july_v/article/details/7577684
[置顶]Machine Learning读书会,面试算法讲座,创业活动,算法班(15年10月):     http://blog.csdn.net/v_july_v/article/details/7237351
数据挖掘领域十大经典算法初探:     http://blog.csdn.net/v_july_v/article/details/6142146

先观察一下网页源码

<ul class="panel_body">    <li><a href="..." onclick="...">03.Algorithms(实现)</a><span>(9)</span></li><li><a href="..." onclick="...">01.Algorithms(研究)</a><span>(27)</span></li><li><a href="..." onclick="...">02.Algorithms(后续)</a><span>(22)</span></li><li><a href="..." onclick="...">04.Algorithms(讨论)</a><span>(1)</span></li>...
</ul>

或许你会用find(“div”, class_=”panel_body”)来得到想要的标签,但是这样就大错特错了,因为网页源码的其它部分也用了ul class=”panel_body”并且在其下面存放的并不是关于分类的文章的url。获取分类文章的url的代码

chapter_tag = url_soup.find_all("ul", class_="panel_body")[5]
'''
5是我自己一个一个试出来的,第六个<ul class="panel_body"> 标签下面的<li>标签正好存放的是分类章节的url
'''

根据博客文章的分类来计算总共需要多少个列表,并创建一个多维列表

L = []
count = 0
for i in chapter_tag.find_all("li"):count +=1
for i in range(count):L.append([])

获取了博客文章分类的url之后先把文章分类的名字以及url存储到列表的第一个位置就像这样[['Machine L & Deep Learning'], ['Algorithms(实现)'],...]

for i in chapter_tag.find_all("li"):text = i.find("a").get_text()'''获取的text是这样'04.Algorithms(讨论)'但是我们并不需要前缀'''handle_text = text.split('.')[1]L[sign].append(handle_text)chapter_url = 'http://blog.csdn.net' + i.find("a").get("href")L[sign].append(chapter_url)L_copy = L[sign]handler_chapter_url(chapter_url, L_copy)sign += 1

获取了文章分类的url之后,就要对url进行处理了(找到各个分类包含的所有文章的url)也不要忘了把当前使用的列表传入到url处理函数中。先观察一下跳转到文章分类中某一个分类的网页源码吧。(比如说进入到Algorithms(实现)这个的页面)

<div class="list_item article_item"><div class="article_title">   <span class="ico ico_type_Original"></span><h1><span class="link_title"><a href="/v_july_v/article/details/6431001">十四、第三章再续:快速选择SELECT算法的深入分析与实现            </a></span></h1>
</div>

要用find_all(“div”, class_=”list_item article_item”).find_all(“span”)[1]来定位到文字叙述部分以及url部分。获取之后还要把文字叙述部分进行处理之后以及url储到列表中(存储到多维列表的哪一个位置就要看L_copy = L[sign]是在多维列表的哪一个位置了)

def handler_chapter_url(chapter_url, L_copy):chapter_url_html  = urllib.request.urlopen(chapter_url)chapter_url_soup = BeautifulSoup(chapter_url_html, 'html.parser')for n in chapter_url_soup.find_all("div", class_="article_title"):detial_tag = n.find_all("span")[1]'''对文字叙述部分进行处理,把换行符空白符啥的通通pass掉'''detial_name = detial_tag.get_text().replace('\n', '').replace('\s', '').strip()detial_url = 'http://blog.csdn.net' + detial_tag.find("a").get("href")L_copy.append(detial_name + ':     '  + detial_url)

所有关于url的操作已经完成了,接下来就要进行查询操作了。

def inquiry(s):for i in range(sign):if L[i][0].startswith(s):for j in range(len(L[i])):print(L[i][j])else:pass

根据输入的字符串来查找列表中存储的信息。最后是所有代码了。

import re
from bs4 import BeautifulSoup
import urllib.requestdef inquiry(s):for i in range(sign):if L[i][0].startswith(s):for j in range(len(L[i])):print(L[i][j])else:passdef handler_chapter_url(chapter_url, L_copy):chapter_url_html  = urllib.request.urlopen(chapter_url)chapter_url_soup = BeautifulSoup(chapter_url_html, 'html.parser')for n in chapter_url_soup.find_all("div", class_="article_title"):detial_tag = n.find_all("span")[1]detial_name = detial_tag.get_text().replace('\n', '').replace('\s', '').strip()detial_url = 'http://blog.csdn.net' + detial_tag.find("a").get("href")L_copy.append(detial_name + ':     '  + detial_url)url = 'http://blog.csdn.net/v_JULY_v/article/details/6530142/'
html = urllib.request.urlopen(url)
url_soup = BeautifulSoup(html, 'html.parser')
chapter_tag = url_soup.find_all("ul", class_="panel_body")[5]
L = []
count = 0
for i in chapter_tag.find_all("li"):count +=1
for i in range(count):L.append([])sign = 0
for i in chapter_tag.find_all("li"):text = i.find("a").get_text()handle_text = text.split('.')[1]L[sign].append(handle_text)chapter_url = 'http://blog.csdn.net' + i.find("a").get("href")L[sign].append(chapter_url)L_copy = L[sign]handler_chapter_url(chapter_url, L_copy)sign += 1s = input('请输入你要查询的知识点:')
inquiry(s)

运行结果

请输入你要查询的知识点:TAOPP
TAOPP(编程艺术)
http://blog.csdn.net/v_JULY_v/article/category/784066
程序员编程艺术第四十一章~四十二章:荷兰国旗、矩阵相乘Strassen算法:     http://blog.csdn.net/v_july_v/article/details/18824517
程序员编程艺术第三十九~四十章:最近公共祖先LCA、打印螺旋矩阵:     http://blog.csdn.net/v_july_v/article/details/18312089
程序员编程艺术第三十八章:Hero在线编程判题、出题系统的演进与优化:     http://blog.csdn.net/v_july_v/article/details/17632221
...

关于用列表来存取信息这一部分讲的比较模糊,其实你只需要print一下列表,或许就会感觉我讲的就是个渣(还没有你自己理解的深入)。

用爬虫来爬取csdn大神的文章的url相关推荐

  1. 实现一个go语言的简单爬虫来爬取CSDN博文(一)

    http://blog.csdn.net/tyBaoErGe/article/details/50375802?hmsr=studygolang.com&utm_medium=studygol ...

  2. 使用Python爬取CSDN历史博客文章列表,并生成目录

    使用Python爬取CSDN历史博客文章列表,并生成目录 这篇博客将介绍如何使用Python爬取CSDN历史博客文章列表,并生成目录. 2020年 2020年04月 cv2.threshold() 阈 ...

  3. Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中

    hello,大家好,我是wangzirui32,今天我们来学习如何爬取CSDN热搜数据,并保存到Excel表格中. 开始学习吧! 学习目录 1. 数据包抓取 2. 编写代码 1. 数据包抓取 打开CS ...

  4. python爬虫--小白爬取csdn页面题目与链接

    爬取csdn页面题目与链接 前言 随着人工智能的不断发展,爬虫这门技术越来越重要-哈哈哈,太过官方.新手小白,过程较曲折,代码较不专业,欢迎批评与指教! 进入正题:本文主要爬取csdn博客某专栏下的题 ...

  5. 技术图文:如何利用C#爬取CSDN的博客文章?

    背景 大家有没有这样的体验,在 CSDN 上发现某个博主有很多干货文章,我们就想拿到这个博主以往文章的列表,在需要的时候进行查询和浏览. 如果从 CSDN 网站上用复制粘贴的方式来建立这个列表,一个是 ...

  6. java爬取页面数据报错401,JAVA自动爬取CSDN用户数据并文章点赞

    爬取用户 某天,我发现我的文章被某个用户点赞了.欣喜之下,把那边文章重新校核更改一遍,接着进入这个点赞我的用户看看,结果发现他近期的博客是一些爬虫的实战.我想,我那篇文章,应该是他做的一个小程序批量加 ...

  7. java爬虫之爬取博客园推荐文章列表

    这几天学习了一下Java爬虫的知识,分享并记录一下: 写一个可以爬取博客园十天推荐排行的文章列表 通过浏览器查看下一页点击请求,可以发现 在点击下一页的时候是执行的 post请求,请求地址为 http ...

  8. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  9. python爬取网易藏宝阁_Python爬虫:爬取阴阳师的式神立绘

    爬虫的而基本步骤是什么嘞? 1.观察分析目标网页 2.解析生成图片下地址 3.下载图片 1.观察目标网站进入调试界面 按F12进入调试界面,然后按F5刷新界面.然后我们就能看到网站上的各种资源和代码了 ...

最新文章

  1. System.Timers.Timer与System.Threading.Timer
  2. 基于php的问答,thinkask
  3. 启明云端分享|在应用SSD201\SSD202D 核心板时,文件系统只读相关问题解决
  4. linux服务器拷贝目录文件夹,linux两台服务器之间文件/文件夹拷贝
  5. 创建订单 - 扣除商品库存与订单状态保存
  6. ubuntu下sublime中修改字体
  7. android xml怎么建立,androidXmlSerializer创建XML文件
  8. 【SimpleITK】胸部CT数据3D space归一化,以及3D plot
  9. 《AI算法工程师手册》读书笔记(1)
  10. SVN自动定时更新方法
  11. oracle用imp导入dmp文件
  12. jvm垃圾回收机制(GC)
  13. 【C++】atomic简介
  14. Activiti 数据库表结构 ACT_GE_BYTEARRAY
  15. Greenplum小把戏 - 仿造Oracle rownum
  16. 爬虫如何爬取猫眼电影TOP榜数据
  17. 使用POI给word文档加水印
  18. echarts 饼状图 (数据为0或很小的扇形显示问题、扇形间隔)
  19. 夏普SHV41 卸载应用 ADB 卸载脚本
  20. 实验19:光敏传感器+继电器=光控智能灯实验

热门文章

  1. dotnetty java netty,DotNetty(.net core)实现一个简单的Tcp Server(jt808)
  2. Golang框架选型比较: goframe, beego, iris和gin
  3. 黑马优购小程序项目详解
  4. 『SQLServer系列教程』——事务详解
  5. 从阿里9面到腾讯5面后被字节捞走,四年Android 开发辛酸之路…,androidstudio汉化
  6. ET框架 如何使用它开发游戏
  7. 用python函数画德国国旗代码_用Python绘制一面国旗
  8. 京东回应“995”工作制:不强求但要全情投入
  9. SSL 2406 2408 约数 比萨
  10. 身份证到期换证提前多长时间