python 爬虫 优快云博客下载-改进版

Python爬虫超详细讲解(零基础入门,老年人都看的懂) 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。 阅读详情

主要是对代码结构进行了调整

新分出了用户类

加入了多线程,实现多个用户同时下载

# -*- coding: utf-8 -*-
import os
import sys
import urllib
import urllib2
import re
import thread
import time
import codecs
import threading
class USER:
	def __init__(self,userName,path):
		self.name=userName
		self.articleList=[]
		self.articleNum=0
		self.pageIndex=1
		self.rootURL='http://blog.youkuaiyun.com'
		self.contentURL='http://blog.youkuaiyun.com/'+self.name+'/article/list/'+str(self.pageIndex)
		self.rootPath=path+'/Blog优快云/'+self.name
	def openURL(self,url):
		headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
		try:
			request = urllib2.Request(url, headers = headers)
			response = urllib2.urlopen(request)
			pageCode = response.read().decode('utf-8')
			return pageCode
		except urllib2.URLError, e:
			if hasattr(e, "reason"):
				print u"连接优快云,错误原因", e.reason
				return None
	def getList(self):
		try:
			url = self.rootURL+'/' +self.name+'/article/list/'+ str(self.pageIndex)
			if self.articleNum==0:
				pageCode=self.openURL(url)
				if pageCode!=None:
					#正则表达式当有多个括号时,返回为字符串元祖列表[(),(),...()]
					#每一个元组元素包含的字符串数与表达式中的括号一致
					#比如下式返回值可能为[('20','18','3')]
					#正则表达式有1个或0个括号时,返回值为字符串列表['aaaa','ddd']
					pattern=re.compile('blog_statistics">.*?<span>(\d+).*?</span>.*?<span>(\d+).*?</span>.*?<span>(\d+).*?</span>',re.S)
					items=re.findall(pattern,pageCode)
					for m in items[0]:
						self.articleNum+=int(m)
			num=0
			articleList=[]
			while num<self.articleNum:
				url = self.rootURL+'/' +self.name+'/article/list/'+ str(self.pageIndex)
				pageCode=self.openURL(url)
				if not pageCode:
					return None
				pattern=re.compile('link_title"><a href="(.*?)">(.*?)</a>',re.S)
				items=re.findall(pattern,pageCode)
				for item in items:
					articleList.append([self.rootURL+item[0].strip(),item[1].strip()])
					#print self.rootURL+item[0]+'-----'+item[1].strip()
					num+=1
					if num>=self.articleNum:
						break
				self.pageIndex+=1
			self.articleList=articleList
		except urllib2.URLError, e:
			if hasattr(e, "reason"):
				print u"连接优快云,错误原因", e.reason
				return None
	def getArticle(self):
		for item in self.articleList:
			pageCode=self.openURL(item[0])
			if not pageCode:
				print u'链接无效'
				return None
			pattern=re.compile('class="article_content">(.*?)</div>',re.S)
			content=re.findall(pattern,pageCode)
			articleID=(item[0].split('/'))[6]
			title=item[1]
			fileName=self.rootPath+'/'+title+'---'+articleID+'.txt'
			#这个地方刚开始少写了'[0]',造成编码对不上,花费了许多时间
			text=content[0]
			text=self.repairCode(text)
			self.saveArticle(fileName,text)
			print self.name+':'+articleID+'.txt has saved!'
	def saveArticle(self,fileName,text):
		if not os.path.exists(self.rootPath):
			os.makedirs(self.rootPath)
		try:
			if os.path.exists(fileName):
				print u'%s 文件已经存在' % (fileName)
				return None
			fobj =codecs.open(fileName, 'w+','utf-8')
			fobj.write(text)
			fobj.close()
		except IOError:
			print 'IO error!'
			return None
	def repairCode(self,text):
		#去除标签
		replace = re.compile('</\w+>')
		text = re.sub(replace,"\r\n",text)
		replace = re.compile('<.*?>')
		text = re.sub(replace,"",text)
		rTermsDict={'<':'<','>':'>','&':'&','"':'"',' ':' ',''':'\'','+':'+'}
		for item in rTermsDict.keys():
			replace = re.compile(item)
			text = re.sub(replace,rTermsDict[item],text)
		#if codeType!='cpp':
			#扩展不同的代码
			#return text
		#对齐代码块
		return text
	def start(self):
		print 'reading %s blog...' % (self.name)
		self.getList()
		self.getArticle()
		print "%s  blog %d has saved!" % (self.name,self.articleNum)

class 优快云SPIDER:

	def __init__(self):
		# 存放程序是否继续运行的变量
		self.rootPATH='E:/Python_Spider'
		self.enable = False
	def start(self):
		#想继续扩展成多线程
		userList=['waytoaccept','xiaosebi1111','zhiyuan_2007']
		thrList=[]
		for name in userList:
			user=USER(name,self.rootPATH)
			t=threading.Thread(target=user.start,name=name)
			thrList.append(t)
		for thr in thrList:
			thr.start()
		for thr in thrList:
			thr.join()
		self.enable = True
		print u'欢迎下次使用优快云爬虫!'
spider = 优快云SPIDER()
spider.start()



感觉爬虫越来越有意思了
网络爬虫——urllib(2) get请求方式的参数必须编码,参数是拼接到url后面,编码之后不需要调用encode方法post请求方式的参数必须编码,参数是放在请求对象定制的方法中,编码之后需要调用encode方法。 阅读详情

相关推荐

基于Spyder(Python 3.8)网络爬虫东方财经股票数据

基于Python爬取豆瓣电影排行榜单的博主经验,本文将爬取东方股票的某些数据。代码来自网络且基于此稍有改编。

weixin_55996541的博客 3539

Python 爬虫简单实现 (爬取下载链接)

Python 爬虫 简单实现 (爬取下载链接) 项目地址:https://github.com/Kulbear/All-IT-eBooks-Spider 这几日和朋友搜索东西的时候无意间发现了一个国外的存有大量PDF格式电子书...

墨雨依旧付疏狂Q 16万+

[Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 1万+

python 爬取网站 下载网站资源

#!/usr/bin/python3 # -*- coding: utf-8 -*- import requests # 发送http请求 from bs4 import BeautifulSoup # 解析html import os from urllib import parse class p_web(object): def __init__(self, web_u...

m0_37711659的博客 1296

python 爬取图片

用python爬取网络资源图片,学习的小例子。网络爬虫案例

Python爬虫之Scrapy(爬取csdn博客)

本博客介绍使用Scrapy爬取博客数据(标题,时间,链接,内容简介)。首先简要介绍Scrapy使用,scrapy安装自行百度安装。 创建爬虫项目 安装好scrapy之后,首先新建项目文件:scrapy startproject csdnSpider 创建项目之后会在相应的文件夹位置创建文件: 创建爬虫模块 首先编写爬虫模块,爬虫模块的代码都放置于spiders文件夹中 。 爬虫模块是用于从单个网站或者多个网站爬取数据的类,其应该包含初始 页面的URL, 以及跟进网页链接、分析页 面内容和提取数据函数。 创建一个Spider类,需要继承scrapy.Spider类,并且定义以下三个属性: 1

python爬虫

python爬虫

gzh_086719的博客 4814

zabbix添加IBM服务器SNMPV3监控

本地采用欧冠的是zabbix5.0,服务器型号是SR860,使用snmpv3因为只支持这个,醉了。说明:本地采用欧冠的是zabbix5.0,服务器型号是SR860。

萌新包大人的博客 1984

『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析优快云与博客园博客阅读数据

0x01:引子 这是一个网络爬虫快速入门实战教程,笔者希望读者能跟着这个博客进行实操,从而掌握网络爬虫的原理与基本操作。部分内容参考自:http://c.biancheng.net/view/2011.html 这个博客以下内容: 了解网络爬虫; 了解网页; 使用 requests 库抓取网站数据; 使用 Beautiful Soup 解析网页; 手把手实战操作统计分析优快云与博客园博客阅读数据 首先介绍一下网络爬虫是什么,可以用来做什么? 百度百科对网络爬虫介...

简明AI工作室 8227

Stata中介效应分析实战:从sgmediation安装到Sobel检验结果解读

本文提供了Stata中进行中介效应分析的完整实战指南,重点介绍了第三方命令sgmediation的安装、配置与使用。通过详细案例演示了如何运用Sobel检验分析变量间的间接效应,并深入解读检验结果,帮助研究者厘清自变量影响因变量的具体路径。文章还探讨了Sobel检验的原理、优缺点及结果报告规范,是进行实证研究的实用参考。

weixin_29197051的博客 630

AI算力网络与通信领域流量分析:优化策略探讨_副本

今天的AI就像一个"超级吃货",每天要"吃"掉海量数据、“消耗"巨量算力——训练一个千亿参数的大模型,可能需要上万块GPU同时工作数周,其间产生的数据传输量足以填满数百万个1TB硬盘。这些GPU和计算节点通过网络连接形成"AI算力网络”,而数据在节点间的流动就是"通信流量"。如果把算力比作AI的"肌肉",那流量就是"血液"——血液不通畅,肌肉再强也使不上劲。

AI天才研究院 1198

Python爬虫分析优快云个人博客数据

周末了,产生一个idea,就是获取个人的全部博客标题及链接,发布时间、浏览量、以及收藏量等数据信息,按访问量排序,整理成一份Excel表存储。 从想法到实现,再到输出这篇博文结束,还是挺好玩,在此总结分享。

Caso_卡索的博客 3660

云架构师进阶【SAP迁移方案设计】手把手教您玩转SAP上云

一,项目背景介绍 今天又接到了北京某制造企业SAP迁移的场景,先简单说明一下,好好的SAP在运行着为什么要做迁移这类大动作呢?众所周知SAP的ERP是企业的绝对核心系统,尤其对于制造业更是核心的系统,这样一套核心系统还是生产环境在迁移的过程中必然要面临比较大的挑战,如果有任何问题的话,都会对企业的绩效产生很大的影响。 经过跟客户沟通才得知,客户的SAP原来的系统是托管在运营商机房里,近期感染了勒索病毒,导致业务宕机,SAP应用服务器无法启动,仅有的数据库服务器可以运行。基于上述情况公司领导当机立断决定迅

bdsh818的博客 4220

【愚公系列】《Python网络爬虫从入门到精通》001-初识网络爬虫

随着互联网的快速发展,数据的获取与处理变得愈发重要。在这个信息爆炸的时代,如何有效地收集和利用网络上的海量数据,成为了各行业面临的一大挑战。网络爬虫,作为一种自动化获取网页信息的技术,正逐渐成为数据分析、市场研究、竞争对手监控等领域不可或缺的工具。本文将带领读者初步了解网络爬虫的基本概念、工作原理以及常见应用场景。我们将探讨爬虫的构建过程,包括如何发送请求、解析网页、存储数据等关键步骤。同时,还会涉及一些爬虫开发中的注意事项,如如何遵循网站的robots.txt协议、避免被封禁等。

愚公智库 12万+

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)

简介水文学法实现河道内生态流量计算

WW、forever的博客 5015

“/usr/lib/wsl/wsl-setup“ failed, exiting

WSL2安装Ubuntu时出现"wsl-setup failed"错误的解决方法 摘要:当Windows用户名包含中文字符时,安装WSL2+Ubuntu会出现"wsl-setup failed"错误。本文提供两种解决方案:1)修改中文用户名(风险较大);2)通过命令手动配置。推荐第二种方法:先使用"wsl -l -v"查看Ubuntu名称,再通过"wsl -d Ubuntu20.04 -e /bin/bash"命令启动WSL2系

猿小白的博客 994

浅谈网络爬虫

浅谈网络爬虫 什么是网络爬虫? 爬虫能干什么 搜索引擎 抢票、刷票等自动化软件 部分破解软件 金融等行业数据挖掘、分析数据来源 其他 爬虫很简单 语言的选择 两种语言的小demo 爬虫也不简单 ip、浏览器头(User-Agent)、和cookie限制 需登录的验证码限制、参数限制 JavaScript渲染/ajax加密 爬虫知识储备路线 1.基础语法: 2.正则和爬虫相关库,以及浏览器F12...

bigsai 1万+

EtherCAT主站SOEM -- 15 -- CIA402伺服驱动器子协议

以上就是EtherCAT主站SOEM – 15 – CIA402伺服驱动器子协议的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2733

【好书推荐3】Python网络爬虫入门到实战

本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基础知识,然后介绍了urllib、Requests请求库以及XPath、Beautiful Soup等解析库,接着介绍了selenium对动态网站的爬取和Scrapy爬虫框架,最后介绍了Linux基础,便于读者自主部署编写好的爬虫脚本。本书所有代码和相关素材可以到GitHub下载获取,地址为https://github.com/sfvsfv/Crawer。本书主要面向对网络爬虫感兴趣的初学者。杨涵文。

定期分享我的发现和想法,感谢你的陪伴和支持 7918

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

『哈士奇赠书33期』- 『Python网络爬虫入门到实战』

『哈士奇赠书33期』- 『Python网络爬虫入门到实战』

易编橙 · 终身成长社群,相遇已是上上签! 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

1.Python网络爬虫—什么是网络爬虫(上篇)?

网络爬虫是一种自动化获取万维网信息的程序或脚本。网络爬虫,也被称为网页蜘蛛或网络机器人,是设计用来自动浏览和收集网络信息的算法驱动的软件。这些程序遵循特定的规则来访问网站,并从中提取数据,这些数据随后可以被存储、分析或用于其他目的。基本概念:网络爬虫通过模拟人类用户浏览网页的方式来工作,但它们以自动化的方式执行这一过程,能够快速地处理和分析大量网页。工作原理:网络爬虫从一个或多个初始网页开始,通常由用户指定,然后按照设定好的算法对网页内容进行爬取,并将数据保存到数据库中。

weixin_63740705的博客 1617

python爬虫代码-优快云博客下载

学python爬虫,请参考这篇博客http://cuiqingcai.com/1052.html 这个介绍的很清晰一些,绝对是良心教程,再次感谢博主! 另感觉爬虫用的比较多的是正则表达式的匹配,这里有个表(来自于优快云) 然后敲了一遍糗事百科的代码可惜没调通,不过原理弄明白了 这里找到了一个能运行的代码https://github.com/zzanswer/QSBK/blob/m

WayToAccept的专栏 1019

【hacker送书活动第7期】Python网络爬虫入门到实战

【hacker送书活动第7期】Python网络爬虫入门到实战,由全网50万粉丝的专家级博主不吃西红柿、川川倾力打造!!!

hacker707的博客 9598

网络爬虫---爬取优快云个人博客,增加博客阅读量实战(内含用户代理池知识)

Python网络爬虫 1.知识要求 掌握python基础语法 熟悉urllib模块知识 异常处理 如果你对相关知识有些遗忘,可以点上面的链接,熟悉一下相关知识点。 2.用户代理池 说明:如果我们只是单一的用一个用户代理去不断爬取博客,来增加访问量,会被网站后台发现,可能导致你的用户代理在一段时间内禁止访问该博客,很不安全。所以,我们要多建立几个用户代理,每次随机的选一个用户代理去访问博客,这样...

渐渐的忘记,赶不上明天(读研ing,2024年毕业) 1752

Python爬虫-爬取csdn博客博文

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:py3study ( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 ) Python爬虫抓取csdn博客 昨天晚上为了下载保存某位csdn大牛的全部博文,写了一个爬虫来自动抓取文章并保存到txt文本,当然也可以 保存到html网页中。这样就可以不

weixin_49345590的博客 1259
上一篇: python爬虫代码-优快云博客下载
下一篇: 网页版微信聊天机器人源码调试遇到的几个问题
WayToAccept
博客等级 码龄14年 21粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值