工具:python3.6  pycharm

库:bs4 + urllib

第一步:读取html源码

  1. from bs4 import BeautifulSoup
  2. import urllib.request#导入urllib库
  3. url = 'https://www.p y t hontab.com/html/pythonhexinbiancheng/index.html'#获取网页链接
  4. request = urllib.request.urlopen(url)
  5. html = request.read()#读取网页源代码

第二步:获取内容和标题

  1. soup = BeautifulSoup(html,'html.parser')#解析html
  2. title_links = soup.select('#catlist > li > a')#找到标题与链接
  3. source_list = []#存储标题与链接的字典
  4. for title_link in title_links:
  5. data = {
  6. 'title' : title_link.get_text(),
  7. 'link' : title_link.get('href')
  8. }
  9. source_list.append(data)

第三步:在当前目录下新建一个lesson的文件夹,将文件存储在此文件夹下

  1. for dic in source_list:#遍历每一个字典
  2. request = urllib.request.urlopen(dic["link"])
  3. html = request.read()
  4. soup = BeautifulSoup(html, 'html.parser')
  5. text_p = soup.select('#Article > div.content > p')#拿到p标签下的数据
  6. text = []#存储文章内容
  7. for a in text_p:
  8. text.append(a.get_text().encode('utf-8'))#取出p标签下的文本部分,即文章的内容
  9. name = dic["title"]
  10. with open('lesson/%s.txt' % name, 'wb') as f:#将文章写入文件
  11. for line in text:
  12. f.write(line)

数据爬取完毕。

注:以上完成一个页面的抓取,若想多抓取页面的话,可用以下代码:

  1. from bs4 import BeautifulSoup
  2. import urllib.request#导入urllib库
  3. url_list = ['https://www.p y t hontab.com/html/pythonhexinbiancheng/index.html']#获取网页链接
  4. for i in range(2,20):
  5. url = 'https://www.py tho ntab.com/html/pythonhexinbiancheng/%s.html' % i
  6. url_list.append(url)
  7. for url in url_list:
  8. request = urllib.request.urlopen(url)
  9. html = request.read()#读取网页源代码
  10. soup = BeautifulSoup(html,'html.parser')#解析html
  11. title_links = soup.select('#catlist > li > a')#找到标题与链接
  12. source_list = []#存储标题与链接的字典
  13. for title_link in title_links:
  14. data = {
  15. 'title' : title_link.get_text(),
  16. 'link' : title_link.get('href')
  17. }
  18. source_list.append(data)
  19.  
  20. for dic in source_list:#遍历每一个字典
  21. request = urllib.request.urlopen(dic["link"])
  22. html = request.read()
  23. soup = BeautifulSoup(html, 'html.parser')
  24. text_p = soup.select('#Article > div.content > p')#拿到p标签下的数据
  25. text = []#存储文章内容
  26. for a in text_p:
  27. text.append(a.get_text().encode('utf-8'))#取出p标签下的文本部分,即文章的内容
  28. name = dic["title"]
  29. directory = '%s.txt' % name
  30. dir = directory.replace('/','_').replace('*','@').replace('"','o').replace('?','w').replace(':','m')
  31. with open('lesson/'+dir, 'wb') as f:#将文章写入文件
  32. for line in text:
  33. f.write(line)

第一篇 - bsp抓取python中文开发者社区中的所有高级教程的更多相关文章

  1. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

  2. Windows环境中,通过Charles工具,抓取安卓手机、苹果手机中APP应用的http、https请求包信息

    Windows环境中,通过Charles工具,抓取安卓手机.苹果手机中APP应用的http.https请求包信息1.抓取安卓手机中APP应用的http请求包信息1)在电脑上操作,查看Windows机器 ...

  3. go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践

    大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还 ...

  4. (第一篇)记一次python分布式web开发(利用docker)

    作者:落阳 日期:2020-12-23 在一次项目开发中,决定使用docker+nginx+flask+mysql的技术栈来开发,用此系列文章记录开发的过程. 系列文章,当前为第一篇,记录一次pyth ...

  5. 开博客这么久以来,第一篇技术文章,python与c的接口对接

    在博客园开博客已经有了蛮长时间了,但是从来只是看别人的文章,自己却从未写过一篇技术文章,深表惭愧.内心还是希望能够给大家提供一些帮助的,希望这第一篇技术博客,能够给大家一些帮助.闲话少叙,开始正文. ...

  6. scrapy抓取的中文结果乱码解决办法

    使用scrapy抓取的结果,中文默认是Unicode,无法显示中文. 中文默认是Unicode,如: \u5317\u4eac\u5927\u5b66 在setting文件中设置: FEED_EXPO ...

  7. 微信运动数据抓取(Python)

    "微信运动"能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据.url类似于:http://hw.weixin.qq.com/steprank/step/person ...

  8. Python爬虫抓取 python tutorial中文版,保存为word

    看到了中文版的python tutorial,发现是网页版的,刚好最近在学习爬虫,想着不如抓取到本地 首先是网页的内容 查看网页源码后发现可以使用BeautifulSoup来获取文档的标题和内容,并保 ...

  9. php抓取远程数据显示在下拉列表中

    前言:周五10月20日的时候,经理让做一个插件,使用的thinkphp做这个demo 使用CURL抓取远程数据时如果出现乱码问题可以加入 header("content-type:text/ ...

随机推荐

  1. class面向对象-1

    一.基本定义 class cl(object): def __init(self,var) self.var=var def func(self,i) print('%s is in %s'%(i,s ...

  2. jmeter元素

    1 test plan functional test mode 选择项:如果勾选 jmeter 会记录从服务器返回的响应数据,如果监视器-选择了文件-则会保存到对应文件 测试jmeter是否配置正确 ...

  3. 转载 -- CSS3 中关于 select 下拉列表的样式

    截图效果:

  4. 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法

    旧版提示:"CLodop云打印服务(localhost本地)未安装启动!"新版提示:"Web打印服务CLodop未安装启动,点击这里下载执行安装(若此前已安装过,可点这里 ...

  5. c++ 动态生成string类型的数组

    定义一个字符串指针,将其初始化为空 char *a=NULL 然后输入输出 cin>>a cout<<a 编译无误,但执行会遇见错误 当为*a动态分配存储空间时,程序执行正常 ...

  6. hdu1875(最小生成树prime)

    思路:一开始想用贪心来着,发现贪心有缺陷,然后就用了最小生成树来写,这里用了prime算法,首先,先建个图,两点之间的边的权值就是两个点的距离,然后直接prime模板 代码 #include<i ...

  7. 把当前ubuntu系统做成镜像

    把当前ubuntu系统做成镜像 2018年06月19日 15:24:51 还需要再学习一个 阅读数:9720 原文地址: http://community.bwbot.org/topic/167/%E ...

  8. Civil 3D 二次开发 事务

    事务,一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 对于初学者来说,从字面上难以理解什么是事务.下面我试着通过讲述事务的作用及特性来帮 ...

  9. 了解AutoCAD对象层次结构 —— 6 ——块表记录

    块表记录是包裹实体对象的最后一层包装了,接下来让我们继续利用MgdDbg工具查看上一小节创建的块定义内的对象有哪些. 操作步骤如下:选择块表记录TestBlock,在右侧列表中找到“Entities ...

  10. Eclipse环境配置与快捷命令

    1.VS.Chrome.Eclipse调试命令对比: VS: F5: 继续运行 F10: 单步执行 F11: 进入函数内部 Shift + F11: 由函数内部返回调用处 Chrome: F8: 继续 ...