工具:python3.6  pycharm

库:bs4 + urllib

第一步:读取html源码

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

第二步:获取内容和标题

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

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

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

数据爬取完毕。

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

from bs4 import BeautifulSoup
import urllib.request#导入urllib库
url_list = ['https://www.p y t hontab.com/html/pythonhexinbiancheng/index.html']#获取网页链接
for i in range(2,20):
url = 'https://www.py tho ntab.com/html/pythonhexinbiancheng/%s.html' % i
url_list.append(url)
for url in url_list:
request = urllib.request.urlopen(url)
html = request.read()#读取网页源代码
soup = BeautifulSoup(html,'html.parser')#解析html
title_links = soup.select('#catlist > li > a')#找到标题与链接
source_list = []#存储标题与链接的字典
for title_link in title_links:
data = {
'title' : title_link.get_text(),
'link' : title_link.get('href')
}
source_list.append(data) for dic in source_list:#遍历每一个字典
request = urllib.request.urlopen(dic["link"])
html = request.read()
soup = BeautifulSoup(html, 'html.parser')
text_p = soup.select('#Article > div.content > p')#拿到p标签下的数据
text = []#存储文章内容
for a in text_p:
text.append(a.get_text().encode('utf-8'))#取出p标签下的文本部分,即文章的内容
name = dic["title"]
directory = '%s.txt' % name
dir = directory.replace('/','_').replace('*','@').replace('"','o').replace('?','w').replace(':','m')
with open('lesson/'+dir, 'wb') as f:#将文章写入文件
for line in text:
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. python之路--管道, 事件, 信号量, 进程池

    一 . 管道 (了解) from multiprocessing import Process, Pipe def f1(conn): # 管道的recv 里面不用写数字 from_main_proc ...

  2. mysql第一天【mysqldump导出数据和mysql导入数据】

    1.使用mysqldump导出数据到本地sql文件 在mysql>bin下执行: 例如: mysqldump -hrm-2ze8mpi5i65429l1qvo.mysql.rds.aliyunc ...

  3. Lambda表达式Contains方法(等价于SQL语句中的like)使用注意事项

    貌似已经半年多没写一篇帖子了,充分的说明要么老总一天折腾的让人心齐疲惫,没心情去写:要么另外一种可能就是自己不思进取,说白了就是懒.好在这种状态在今天被打破了.MoNey加油. 众所周知,想在Enti ...

  4. How to install Niresh Mavericks on PC

    ed2k://|file|osx-mavericks.dmg|5653921792|f789090803e9b2c8d582813c0d4a33bf|/ diskutil list diskutil ...

  5. jpa 比较复杂的查询和用in关键字

    in关键字使用代码

  6. vim指令

    编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式: a: 在当前光标所在字符的后面,转为输入模式: o: 在当前光标所在行的下方,新建一行,并转为输入模式: I:在当前光标所在行的 ...

  7. Spring Boot 构建电商基础秒杀项目 (一) 项目搭建

    SpringBoot构建电商基础秒杀项目 学习笔记 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包, Spring Boot ...

  8. spring的作用是减低耦合,从编译器降低,例如不直接通过new方式 而是通过工厂方式获取对象

    spring的作用是减低耦合,从编译器降低,例如不直接通过new方式 而是通过工厂方式获取对象

  9. 【深入Java虚拟机】之一:Java内存模型

    [深入Java虚拟机]之:Java内存区域与内存溢出 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个 ...

  10. BZOJ1823[JSOI2010]满汉全席——2-SAT+tarjan缩点

    题目描述 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只有极少數博学多闻技艺高超的厨师能够做出满汉全席,而能够烹饪出经过 ...