第一篇 - bsp抓取python中文开发者社区中的所有高级教程
工具: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中文开发者社区中的所有高级教程的更多相关文章
- 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- Windows环境中,通过Charles工具,抓取安卓手机、苹果手机中APP应用的http、https请求包信息
Windows环境中,通过Charles工具,抓取安卓手机.苹果手机中APP应用的http.https请求包信息1.抓取安卓手机中APP应用的http请求包信息1)在电脑上操作,查看Windows机器 ...
- go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践
大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还 ...
- (第一篇)记一次python分布式web开发(利用docker)
作者:落阳 日期:2020-12-23 在一次项目开发中,决定使用docker+nginx+flask+mysql的技术栈来开发,用此系列文章记录开发的过程. 系列文章,当前为第一篇,记录一次pyth ...
- 开博客这么久以来,第一篇技术文章,python与c的接口对接
在博客园开博客已经有了蛮长时间了,但是从来只是看别人的文章,自己却从未写过一篇技术文章,深表惭愧.内心还是希望能够给大家提供一些帮助的,希望这第一篇技术博客,能够给大家一些帮助.闲话少叙,开始正文. ...
- scrapy抓取的中文结果乱码解决办法
使用scrapy抓取的结果,中文默认是Unicode,无法显示中文. 中文默认是Unicode,如: \u5317\u4eac\u5927\u5b66 在setting文件中设置: FEED_EXPO ...
- 微信运动数据抓取(Python)
"微信运动"能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据.url类似于:http://hw.weixin.qq.com/steprank/step/person ...
- Python爬虫抓取 python tutorial中文版,保存为word
看到了中文版的python tutorial,发现是网页版的,刚好最近在学习爬虫,想着不如抓取到本地 首先是网页的内容 查看网页源码后发现可以使用BeautifulSoup来获取文档的标题和内容,并保 ...
- php抓取远程数据显示在下拉列表中
前言:周五10月20日的时候,经理让做一个插件,使用的thinkphp做这个demo 使用CURL抓取远程数据时如果出现乱码问题可以加入 header("content-type:text/ ...
随机推荐
- 隐藏Nginx或Apache以及PHP的版本号的方法
当黑客入侵一台服务器时,首先会”踩点”, 这里的”踩点”,指的是了解服务器中运行的一些服务的详细情况,比如说:版本号,当黑客知道相应服务的版本号后,就可以寻找该服务相应版本的一些漏洞来入侵,攻击,所以 ...
- UDP反射DDoS攻击原理和防范
东南大学:UDP反射DDoS攻击原理和防范 2015-04-17 中国教育网络 李刚 丁伟 反射攻击的防范措施 上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素.因此,防范可以从配 ...
- sql 保留2位小数/换行
2.176544保留两位小数 1.select Convert(decimal(18,2),2.176544) 结果:2.18 2.select Round(2.176544,2) 结果:2.180 ...
- Mybatis之执行insert、update和delete操作时自动提交
单独使用Mybaits,而没有集成Spring的话,执行insert.update和delete操作是不会自动提交的,即执行语句后不会在数据库有对应的数据变化. 解决这样的方法就是打开自动提交开关,在 ...
- How to execute a Stored Procedure with Entity Framework Code First
Recently I worked on a project, which I started as code first and then I forced to switch to Databas ...
- BZOJ4477[Jsoi2015]字符串树——可持久化trie树
题目描述 萌萌买了一颗字符串树的种子,春天种下去以后夏天就能长出一棵很大的字符串树.字符串树很奇特,树枝上都密密麻麻写满了字符串,看上去很复杂的样子.[问题描述]字符串树本质上还是一棵树,即N个节点N ...
- 微信小程序——引入背景图片【六】
前言 之前写了一些小程序的博文只是看文档边看边写,了解下他,这次可是真枪真刀的做了! 框架使用的是美团的mpvue,我也是一边学习,一边写的,如有错误之处,还望大家指出. 在这里我有个问题,为什么微信 ...
- visual studio 显示引用关系 作者更改项
visual studio 2017中,每个类或者方法顶部会显示此方法的引用关系或者作者更改项:这个功能极大了提高了我们代码的定位效率:不过有时候却发现每一行代码都有,会增加我们屏幕显示内容,有时候看 ...
- pip详解
pip是一个安装和管理 Python 包的工具.python安装包的工具有easy_install, setuptools, pip,distribute等,pip是Python官方推荐的包管理工具 ...
- 【XSY2665】没有上司的舞会 LCT DP
题目大意 有一棵树,最开始只有一个点.每次会往这棵树中加一个点,总共\(n\)次.输出每次加点后树的最大独立集大小. 强制在线. \(n\leq 300000\) 题解 显然是LCT. 那么要维护什么 ...