一个高中最优化问题例题的问题

python编码方式有关问题
python编码方式有关问题
发布时间: 14:01:24
编辑:www.fx114.net
本篇文章主要介绍了"python编码方式有关问题",主要涉及到python编码方式有关问题方面的内容,对于python编码方式有关问题感兴趣的同学可以参考一下。
python编码方式有关问题python编码方式问题:&&& s ='\xe5\xad\x98\xe5\x9c\xa8\xe8\xa1\xa5\xe4\xb8\x81,\xe4\xbd\x86\xe8\xa1\xa5\xe4\xb8\x81\xe7\x8a\xb6\xe6\x80\x81\xe4\xb8\x8d\xe6\x98\xaf\xe6\x9b\xb4\xe6\x96\xb0\xe6\x80\x81'&&& s.decode('utf-8')u'\u5b58\u\u4e01,\u4f46\u\u72b6\ud\u662f\u66f4\u65b0\u6001'&&& s.decode('utf-8').encode('gbk')'\xb4\xe6\xd4\xda\xb2\xb9\xb6\xa1,\xb5\xab\xb2\xb9\xb6\xa1\xd7\xb4\xcc\xac\xb2\xbb\xca\xc7\xb8\xfc\xd0\xc2\xcc\xac'&&& s.decode('utf-8').encode('gb2312')'\xb4\xe6\xd4\xda\xb2\xb9\xb6\xa1,\xb5\xab\xb2\xb9\xb6\xa1\xd7\xb4\xcc\xac\xb2\xbb\xca\xc7\xb8\xfc\xd0\xc2\xcc\xac'闷,这个怎么转换为中文...求教.
Python code
'\xe5\xad\x98\xe5\x9c\xa8\xe8\xa1\xa5\xe4\xb8\x81,\xe4\xbd\x86\xe8\xa1\xa5\xe4\xb8\x81\xe7\x8a\xb6\xe6\x80\x81\xe4\xb8\x8d\xe6\x98\xaf\xe6\x9b\xb4\xe6\x96\xb0\xe6\x80\x81'
&&& print s.decode('utf-8')
存在补丁,但补丁状态不是更新态
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:[Python]新手写爬虫全过程
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
| 时间 2015 |
作者 红领巾 ]
今天早上起来,第一件事情就是理一理今天该做的事情,瞬间get到任务,写一个只用字符串内建函数的爬虫,定义为v1.0,开发中的版本号定义为v0.x。数据存放?这个是一个练手的玩具,就写在txt文本里吧。其实主要的不是学习爬虫,而是依照这个需求锻炼下自己的编程能力, 最重要的是要有一个清晰的思路(我在以这个目标努力着) 。ok,主旨已经订好了,开始‘撸串’了。
目标网站:/post/category/main/(一个很有趣的网站,一段话配一个图,老有意思了~)网站形式如下:
目标:把大的目标分为几个小的目标。因为第一次干这个,所以对自己能力很清楚,所以完成顺序由简单到复杂。
1.爬取一期的内容,包括标题,和图片的url
2.把数据存在本地的txt文件中
3.想爬多少就爬就爬少
4.写一个网站,展示一下。(纯用于学习)
Let‘s 搞定它!
时间——9:14
把昨天晚上做的事情交代一下。昨天晚上写的代码实现了爬取一期里的所有标题。
我用的是google浏览器,进入开发者模式,使用’页面内的元素选择器‘,先看一下内页中的结构, 找到我们要的数据所在’标签‘ 。
这里我们需要的博海拾贝一期的内容全部在&article class=" article-content"&这个标签里面,如下图:
第一条红线是:页面内的元素选择器
第二条是:内容所在标签
第三条是:title
经过分析得出,我只要&article class=" article-content"&,这个标签的内容:所以写了下面的方法:
def content(html): # 内容分割的标签 str = '&article class="article-content"&' content = html.partition(str)[2] str1 = '&div class="article-social"&' content = content.partition(str1)[0] return content # 得到网页的内容
这里需要说一下:在写这个爬虫之前我就打算只用字符串的内置函数来处理匹配问题,所以我就上http://www.w3cschool.cc/python/进入到字符串页面,大致看了一遍字符串的内建函数有哪些。
partition() 方法用来根据指定的分隔符将字符串进行分割。
如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
partition() 方法是在2.5版中新增的。参考:http://www.w3cschool.cc/python/att-string-partition.html
这样我就得到只有内容的字符串了,干净~
得到title的内容。title的格式如下,我只要’【2】‘后面的文字,后面的img暂时不考虑一步步的来。
&p&【2】这是我最近的状态,请告诉我不是我一个人! &/p& &p& &img src= /mw690/005CfBldtw1etay8ifthnj30an0aot8w.jpg /& &/p& &p&
我写了下面的方法:
def title(content,beg = 0):# 思路是利用str.index()和序列的切片try: title_list = [] while True:
num1 = content.index('】',beg) num2 = content.index('&/p&',num1) title_list.append(content[num1:num2]) beg = num2except ValueError: return title_list
这里用try....except是因为我不知道怎么跳出循环。。。。求大神有更好的方法告诉我。
我这里跳出循环用的是当抛出VlaueError异常就说明找不到了,那就返回列表。就跳出循环了。
num1是】的位置,num2是&/p&的位置,然后用序列的切片,咔嚓咔嚓一下就是我想要的数据了。这里需要注意的是:切片’要头不要尾‘所以我们的得到的数据就是这个样子的:
哎呀,这个是什么鬼!要头不要尾就是这个意思!
然后我就想:那就把num1加1不就完了吗?我真是太天真了。。。。
请+3,我觉得原理是这样的,这个是个中文字符!(求大神指点)
交代清楚我昨天晚上做的事情了,记录下时间——10:01,下面我要爬图片的url了。这里要说一下,如果要把图片下下来,最重要的一步就是得到url,然后 下载下来保存到本地(用文本的IO)。
def img(content,beg = 0):# 思路是利用str.index()和序列的切片try: img_list = [] while True:
src1 = content.index('http',beg) src2 = content.index('/&&/p&',src1) img_list.append(content[src1:src2]) beg = src2except ValueError: return img_list
结果图如下:
这里发现,有的时候一个title会有很多个图片。我思考之后有如下思路:
时间——11:05 吃个饭先
时间——11:44 回来了
所以我写了如下代码:
def data_out(data): #这里写成一个方法好处是,在写入文本的时候就在这里写 fo = open("/home/qq/foo.txt", "a+") #for i,e in enumerate(data): fo.write("\n".join(data));
#print '第%d个,title:%s' % (i,e) # 关闭打开的文件 fo.close()
这样造成了一个问题,看图
造成最后一个和新的一个列表写入时在同一行。同时用with....as更好。修改后代码如下:
def data_out(data): #写入文本 with open("/home/qq/foo.txt", "a+") as fo: fo.write('\n') fo.write("\n".join(data));
下面研究title和img以什么样的格式存入txt文本:
这里我有一个概念混淆了,+和join()方法的效率问题主要在连接多个字符串的时候,我这个只用连接一次,不需要考虑这个问题。
def data_out(title, img): #写入文本 with open("/home/qq/foo.txt", "a+") as fo: fo.write('\n') size = 0 for size in range(0, len(title)): fo.write(title[size]+'$'+img[size]+'\n');
文本中的内容如下:
愿你贪吃不胖,愿你懒惰不丑,愿你深情不被辜负。$/mw690/005CfBldtw1etay8dl1bsj30c50cbq4m.jpg" 这是我最近的状态,请告诉我不是我一个人!$/mw690/005CfBldtw1etay8ifthnj30an0aot8w.jpg 引诱别人和你击拳庆祝,然后偷偷把手势变成二,就可以合体成为蜗牛cosplay……$/mw690/005CfBldtw1etay8fzm1sg30b40644qq.gif 原来蜗牛是酱紫吃东西的。。。。涨姿势!$/mw690/005CfBldtw1etay8egg8vg30bo08ax6p.gif
写入文本的最后,解决多个图片的问题:
def many_img(data,beg = 0): #用于匹配多图中的url try: many_img_str = '' while True: src1 = data.index('http',beg) src2 = data.index(' /&&br /& &img src=',src1) many_img_str += data[src1:src2]+'|' # 多个图片的url用"|"隔开 beg = src2 except ValueError: return many_img_str def data_out(title, img): #写入文本 with open("/home/qq/data.txt", "a+") as fo: fo.write('\n') for size in range(0, len(title)): # 判断img[size]中存在的是不是一个url if len(img[size]) & 70:
img[size] = many_img(img[size])# 调用many_img()方法 fo.write(title[size]+'$'+img[size]+'\n')
输出如下:
元气少女陈意涵 by @TopFashionStyle$/mw690/005CfBldtw1etay848iktj30bz0bcq4x.jpg|/mw690/005CfBldtw1etay83kv5pj30c10bkjsr.jpg|/mw690/005CfBldtw1etay82qdvsj30c10bkq3z.jpg|/mw690/005CfBldtw1etay836z8lj30c00biq40.jpg|/mw690/005CfBldtw1etay8279qmj30ac0a0q3p.jpg|/mw690/005CfBldtw1etay81ug5kj30c50bnta6.jpg|/mw690/005CfBldtw1etay8161ncj30c20bgmyt.jpg|/mw690/005CfBldtw1etay804oy7j30bs0bgt9r.jpg|
暂时功能是实现了,后面遇到问题需要修改在改吧。。。。新手走一步看一步!!!
到此为止,已经完成了前两个简单的计划:
1.爬取一期的内容,包括标题,和图片的url
2.把数据存在本地的txt文件中
全部代码如下:
#coding:utf-8import urllib#######爬虫v0.1 利用urlib 和 字符串内建函数######def getHtml(url): # 获取网页内容 page = urllib.urlopen(url) html = page.read() return htmldef content(html): # 内容分割的标签 str = '&article class="article-content"&' content = html.partition(str)[2] str1 = '&div class="article-social"&' content = content.partition(str1)[0] return content # 得到网页的内容def title(content,beg = 0): # 匹配title # 思路是利用str.index()和序列的切片 try: title_list = [] while True:
num1 = content.index('】',beg)+3 num2 = content.index('&/p&',num1) title_list.append(content[num1:num2]) beg = num2 except ValueError: return title_listdef get_img(content,beg = 0): # 匹配图片的url # 思路是利用str.index()和序列的切片 try: img_list = [] while True:
src1 = content.index('http',beg) src2 = content.index('/&&/p&',src1) img_list.append(content[src1:src2]) beg = src2 except ValueError: return img_listdef many_img(data,beg = 0): #用于匹配多图中的url try: many_img_str = '' while True: src1 = data.index('http',beg) src2 = data.index(' /&&br /& &img src=',src1) many_img_str += data[src1:src2]+'|' # 多个图片的url用"|"隔开 beg = src2 except ValueError: return many_img_str def data_out(title, img): #写入文本 with open("/home/qq/data.txt", "a+") as fo: fo.write('\n') for size in range(0, len(title)): # 判断img[size]中存在的是不是一个url if len(img[size]) & 70:
img[size] = many_img(img[size])# 调用many_img()方法 fo.write(title[size]+'$'+img[size]+'\n')content = content(getHtml("/post/10475/"))title = title(content)img = get_img(content)data_out(title, img)# 实现了爬的单个页面的title和img的url并存入文本
时间——15:14
下面要重新分析网站,我已经可以获得一期的内容了,我现在要得到,其它期的url,这样就想爬多少就爬多少了。
目标网址:/post/category/main/
按照上面的方法进入开发者模式分析网站结构,找出目标数据所在的标签,撸它!
在首页中需要的数据全部都在&div class="content"&标签里,分隔方法如下:
def main_content(html):# 首页内容分割的标签 str = '&div class="content"&' content = html.partition(str)[2] str1 = '&/div&' content = content.partition(str1)[0] return content # 得到网页的内容
我暂时需要的数据:每一期的名字和每一期的url。
经过我的分析:该网站的每期的url格式是这样的: " /post/10189/"只有数字是变化的。
后来我又发现,我想要的这两个数据都在&h2&这个标签下面,获取每期url的方法如下:
def page_url(content, beg = 0):try: url = [] while True: url1 = content.index('&h2&&a href="',beg)+13 url2 = content.index('" ',url1) url.append(content[url1:url2])
beg = url2except ValueError: return url
title的格式,
我思考了一下,我要title其实没什么太大的意思,用户有不可能说我要看那期,只需要输入看多少期就可以了,标题没有什么实际意义(不像内容中的title是帮助理解改张图笑点的)。所以我打算在这个版本中只实现,你输入想查看要多少期,就返回多少期!
那么下面就需要一个策略了:
/post/category/main/ 共20期
/post/category/main/page/2/ 共20期
经查看,每页都是20期
当你要查看的期数,超过20期的时候需要,增加page的数值,进入下一页进行获取
最后一页为这个:/post/category/main/page/48/
实现代码,这个我要想一想怎么写,我是第一次写爬虫,不要嘲讽我啊!
时间——17:09
感觉快实现了,还在写:
def get_order(num):page = num / 20order = num % 20 # 超出一整页的条目for i in range(1, page+1): # 需这里需要尾巴 url = '/post/category/main/page/%d' % i
print url if (i == page)&(order & 0): url = '/post/category/main/page/%d' % (i+1)
print url+",%d条" % orderget_order(55)
运行结果:
/post/category/main/page/1/post/category/main/page/2/post/category/main/page/3,15条2~~~~~~~~~~~~15
这里我考虑是这样的我需要重写page_url,需要多加一个参数,如下:
未完待续@!!
本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
阅读(6090)
CodeSecTeam微信公众号
脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达。
手机客户端

我要回帖

更多关于 带约束的最优化问题 的文章

 

随机推荐