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

IEEE Access 上岸指南,附含泪整理的 cover letter 、沟通邮件、终版文档等资料包

终于上岸了! 我是一个小硕,本科期间发表过两篇水文,奈何学校有更高的毕业要求,只能硬着头皮尝试一下 SCI。 想投 IEEE Access 的朋友都应该知道 小木虫论坛 对这个期刊的讨论,褒贬不一,有的人说是大水刊,有的人说有难度。 比如: @wow_: 不可否认,灌水期刊。只要之前中过一篇,再投基本没有不录用的!我们实验室其他老师说过一区除外的收费期刊都应该禁止灌水。 @pssp: 审稿人还...

kurryluo的博客 1万+

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

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

简明AI工作室 8227

极验滑块验证码破解与研究(一):AST还原混淆JS

极验滑块验证码破解与研究(一):AST还原混淆JS声明一、环境安装1. node安装1.1. node下载1.2. 配置环境变量1.3. node安装检测1.4. pycharm配置node环境2. babel库安装2.1. babel库安装命令2.2. babel库安装检测二、AST还原混淆JS1. 模块导入2. AST还原流程3. 复制还原需要用到的js源码4. AST还原函数详解4.1. replace_unicode4.2. replace_unicode, replace_name_array,

帯泪的鱼的博客 1万+

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告

据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。

MARKETRESEARCH的博客 1137

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

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

Caso_卡索的博客 3660

Microsemi Libero使用技巧1——查看芯片资源占用情况

Microsemi Libero使用技巧——查看芯片资源占用情况 前言 与MCU不同,FPGA的资源主要包括:逻辑资源,IO资源,Flash大小,PLL资源,SoC硬核处理器资源等,其中逻辑资源和IO资源是我们主要关心的,本篇文章将介绍,如何通过Microsemi Libero IDE来查看工程的详细资源占用情况。 A2F200M3F的资源 以Microsemi SmartFusion系列A2F2...

whik1194的博客 5694

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

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

愚公智库 12万+

SAP 生产订单归档简介

通常在使用了几年的SAP后,系统中会产生非常多的数据在系统中,特别是制造业的生产订单,常年的累积会存在很多的订单在系统中,这个时候就可以使用归档的功能,对生产订单进行处理。标记DLFL的前提是需要完成生产订单的差异结算,DLFL标记可以清除掉生产订单的相关需求和预留。6、在执行CO78选择删除,前面的操作相当于我们把需要归档的数据写入了数据库中,现在正式进行数据的归档删除。然后我们co03在去看生产订单,可以看到生产订单中多了删除的状态和标记的状态。我这里直接执行的程序PPARCHP1,效果其实是一样的。

我小时候很黑的博客 2285

Python爬虫实战:Playwright 攻克京东图书新书榜(含动态价格与分页)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 592

浅谈网络爬虫

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

bigsai 1万+

基于混合智能框架的景区边界范围预测与补全系统

摘要 本文提出一种混合智能框架,结合随机森林模型和GIS规则约束,解决景区边界缺失问题。系统基于Python和ArcGIS平台,利用多源地理空间数据训练随机森林分类器预测景区范围,并集成地形、水文、道路等GIS规则进行优化。实验结果表明,该方法能有效预测15000个景区的边界,精度优于单一模型。创新点在于: 1)数据驱动与知识驱动相结合的混合智能范式; 2)面向全国尺度的大规模边界补全; 3)提供完整的Python+ArcGIS实现方案。该系统为景区精细化管理提供了技术支撑,具有实用价值。

huanghm88的专栏 282

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

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

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

weixin_63740705的博客 1617

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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、付费专栏及课程。

余额充值