首页
免费后端云服务
关于
推荐
免费图床源码
Search
1
小程序后端入门系列视频教程【一-微信开发工具介绍】
9,722 阅读
2
微信小程序三级联动之多列选择器
9,606 阅读
3
小程序开发免费后端之神秘利器分享
9,536 阅读
4
Golang-开发企业级资源权限管理【第一步表设计】-1
9,081 阅读
5
学会微信服务端开发第一步
8,979 阅读
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
登录
Search
Magic
累计撰写
124
篇文章
累计收到
70
条评论
首页
栏目
日常记录
日常
随笔
Bmob后端云
从零开始学物联网
Serverless实战驾校小程序
心邮
Serverless
向量数据库
页面
免费后端云服务
关于
推荐
免费图床源码
搜索到
51
篇与
的结果
2012-01-17
Python 一个简单的爬虫代码
#-*-coding:utf-8-*- import urllib2 import urllib import re import thread import time #-----------加载处理糗事百科----------- class Spider_Model: def __init__(self): self.page=1 self.pages=[] self.enable=False # 将所有的段子都扣出来,添加到列表中并且返回列表 def GetPage(self,page): myUrl=""+page user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers={'User-Agent':user_agent } req=urllib2.Request(myUrl,headers=headers) myResponse=urllib2.urlopen(req) myPage=myResponse.read() #encode的作用是将unicode编码转换成其他编码的字符串 #decode的作用是将其他编码的字符串转换成unicode编码 unicodePage=myPage.decode("utf-8") # 找出所有class="content"的div标记 #re.S是任意匹配模式,也就是.可以匹配换行符 myItems=re.findall('(.*?) ',unicodePage,re.S)items = []for item in myItems:item 中第一个是div的标题,也就是时间item 中第二个是div的内容,也就是内容items.append([item[0].replace("\n",""),item[1].replace("\n","")])return items用于加载新的段子def LoadPage(self):如果用户未输入quit则一直运行while self.enable:如果pages数组中的内容小于2个if len(self.pages) < 2:try:获取新的页面中的段子们myPage = self.GetPage(str(self.page))self.page += 1self.pages.append(myPage)except:print '无法链接糗事百科!'else:time.sleep(1)def ShowPage(self,nowPage,page):for items in nowPage:print u'第%d页' % page , items[0] , items[1]myInput = raw_input()if myInput == "quit":self.enable = Falsebreakdef Start(self):self.enable = Truepage = self.pageprint u'正在加载中请稍候......'新建一个线程在后台加载段子并存储thread.start_new_thread(self.LoadPage,())----------- 加载处理糗事百科 -----------while self.enable:如果self的page数组中存有元素if self.pages:nowPage = self.pages[0]del self.pages[0]self.ShowPage(nowPage,page)page += 1----------- 程序的入口处 -----------print u"""---------------------------------------程序:糗百爬虫版本:0.3作者:why日期:2014-06-03语言:Python 2.7操作:输入quit退出阅读糗事百科功能:按下回车依次浏览今日的糗百热点---------------------------------------"""print u'请按下回车浏览今日的糗百内容:'raw_input(' ')myModel = Spider_Model()myModel.Start()
2012年01月17日
2 阅读
0 评论
0 点赞
2011-12-07
scrapy实战百度百科数据抓取
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 架构 图scrapy中文手册1.安装SCRAPY2.创建一个Scrapy项目点击(此处)折叠或打开 scrapy startproject tutorial 生成 tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... 3.新建抓取文件spiders/baike_spider.py,实现代码 点击(此处)折叠或打开 #-*-coding:utf-8-*- from scrapy.spider import BaseSpider from scrapy.http import Request from scrapy.selector import HtmlXPathSelector from tutorial.items import BaikeItem from scrapy.contrib.spiders import CrawlSpider,Rule from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor i=0 not_data=0 #统计未采集到的条数 class BaikeSpider(CrawlSpider): name="baike" #减慢爬取速度 为1s # download_delay=1 allowed_domains=['baike.baidu.com'] start_urls=[ "互联网" ] rules=[ Rule(SgmlLinkExtractor(allow=('/?limit=30&index=([\w]+)&offset=([\d]+)\#gotoList',),)), Rule(SgmlLinkExtractor(allow=('/view/',), restrict_xpaths=('//div[@class="list"]')), callback='parse_item', ), ] def parse_item(self,response): global i,not_data i+=1 #记录抓取条数 print i item=BaikeItem() sel=HtmlXPathSelector(response) baike_url=str(response.url) baike_name=sel.xpath('//div[@id="sec-content0"]/h1/span[@class="lemmaTitleH1"]/text()').extract() baike_desc=sel.xpath('//div[@class="card-summary-content"]/div[@class="para"]/text()').extract()[0] ifnotbaike_name: not_data+=1 #记录未抓取到的条数 print not_data ifnotbaike_desc: baike_desc='未抓取到' item['title']=[n.encode('utf-8')forninbaike_name] item['link']=baike_url.encode('utf-8') item['desc']=baike_desc yield item 4.编写item 点击(此处)折叠或打开 class CsdnItem(scrapy.Item): blog_name=scrapy.Field() blog_url=scrapy.Field() 5.保存数据到mysql 点击(此处)折叠或打开 #-*-coding:utf-8-*- # Define your item pipelines here #保存文件 # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: from scrapy import log from twisted.enterprise import adbapi from scrapy.http import Request from scrapy.exceptions import DropItem import time import MySQLdb import MySQLdb.cursors import json import codecs class TutorialPipeline(object): def __init__(self): self.dbpool = adbapi.ConnectionPool('MySQLdb', db = 'test', user = 'root', passwd = '', cursorclass = MySQLdb.cursors.DictCursor, charset = 'utf8', use_unicode = False ) def process_item(self, item, spider): query = self.dbpool.runInteraction(self._conditional_insert, item) query.addErrback(self.handle_error) def _conditional_insert(self, tx, item): if item.get('title'): tx.execute(\ "insert into test(id,title, link, descc ) \ values (null,%s,%s,%s)", (item['title'],item['link'],item['desc']) ) 6.执行代码 7.效果
2011年12月07日
3 阅读
0 评论
0 点赞
2011-09-16
负载均衡技术原理
一、原理图1 负载均衡原理图看图说话,基于上图原理的负载均衡有硬件设备也有软件设备。现在常见的是四层或七层交换,所以负载均衡设备也就被称为是四层到七层交换机。二、四层交换图2 四层交换拓扑图三、七层交换图3 七层交换拓扑图以后分析HaProxy的时候还会详说,敬请期待。
2011年09月16日
3 阅读
0 评论
0 点赞
2011-07-01
【web】Flash头像上传裁剪功能附下载【ASP,PHP,JSP,PYTHONE】
项目演示效果,在线演示地址daxiutai.com/mote_manage/space_active.html1.最终效果2.目录包含 08-May-2014 18:08944 ------------ 演示页面 08-May-2014 16:1410K 08-May-2014 18:115.9K 08-May-2014 16:313.源码分析一、HOME.html演示页面HOME.html调用框架代码 width="300" scrolling="no" height="300" frameborder="0"src="thumb_scale.html?123#width=300#height=450#md5=newsalbum#name=Filedata#post=upload/image_upload_swf/#key=news"id="upload_pic" name="upload_pic">二、thumb_scale.htmlthumb_scale.html主要是掉用Flash,并显示出来_。 _三、回调函数你可以修改成你需要的结果点击(此处)折叠或打开 /* *flash通信接口.回调函数 *目前只接受一个方法: *callback(data:object) *object:{data:jsonString} */ varASFace={ callback:function(text){ varre=eval("("+text.data+")"); if(re.stat){ if(config.input){ varinput=parent.document.getElementById(config.input); input.value=re.url; } if(config.md5){ varinput=parent.document.getElementById(config.md5); input.value=re.md5; } if(config.review){ varbox=parent.document.getElementById(config.review); box.innerHTML=""; } } } } 4.上传执行函数,可以修改为你的上传接口thumb_scale.html?123#width=300#height=450#md5=newsalbum#name=Filedata#post=upload/image_upload_swf/#key=news,需要注意的是,他上传的是一个base64_decode码数据,接收时处理下就行。总结:截图功能简洁简单,只要修改下需要的大小,以及回调函数就OK。最后附上下载地址 下面是整个上传的DOME
2011年07月01日
3 阅读
0 评论
0 点赞
2011-03-03
【p2p项目】后台系统栏目
暂无简介
2011年03月03日
1 阅读
0 评论
0 点赞
1
...
6
7
8
...
11