python2.4升级2.7.2

转自:https://www.weidianyuedu.com/

[root@~]# python

Python 2.4.3 (#1, May 5 2011, 16:39:10)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

;>>

[root@~]#

下载新版本的python

[root@~]# wget

解压缩 以及编译

[root@~]# tar jxvf Python-2.7.3.tar.bz2

[root@wangyuelou Python-2.7.2]# ./configure --prefix=/usr/local/python27

[root@wangyuelou Python-2.7.2]# make

[root@wangyuelou Python-2.7.2]# make install

[root@wangyuelou Python-2.7.2]# ls /usr/local/python27/ -al

total 28

drwxr-xr-x 6 root root 4096 Jul 14 00:21 .

drwxr-xr-x 20 root root 4096 Jul 14 00:17 …

drwxr-xr-x 2 root root 4096 Jul 14 00:21 bin

drwxr-xr-x 3 root root 4096 Jul 14 00:21 include

drwxr-xr-x 4 root root 4096 Jul 14 00:21 lib

drwxr-xr-x 3 root root 4096 Jul 14 00:21 share

覆盖原来的python链接

[root@wangyuelou Python-2.7.2]# mv /usr/bin/python /usr/bin/python_old

[root@wangyuelou Python-2.7.2]# ln -s /usr/local/python27/bin/python /usr/bin/

[root@wangyuelou Python-2.7.2]# python

Python 2.7.2 (default, Jul 14 2011, 00:20:14)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

此处已经可以正常使用python2.7了

但是因为yum是使用的2.4的版本来用的,所以 还需要修改一下

[root@~]# yum

There was a problem importing one of the Python modules

required to run yum. The error leading to this problem was:

No module named yum

Please install a package which provides this module, or

verify that the module is installed correctly.

It’s possible that the above module doesn’t match the

current version of Python, which is:

2.7.2 (default, Jul 14 2011, 00:20:14)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)]

If you cannot solve this problem yourself, please go to

the yum faq at:

[root@wangyuelou Python-2.7.2]# vim /usr/bin/yum

#!/usr/bin/python #修改此处为2.4的位置

[root@~]# vim /usr/bin/yum

#!/usr/bin/python2.4

[root@~]# yum

Loaded plugins: fastestmirror

You need to give some command

usage: yum [options] COMMAND

List of Commands:

check-update Check for available package updates

clean Remove cached data

deplist List a package’s dependencies

downgrade downgrade a package

erase Remove a package or packages from your system

groupinfo Display details about a package group

groupinstall Install the packages in a group on your system

grouplist List available package groups

groupremove Remove the packages in a group from your system

help Display a helpful usage message

info Display details about a package or group of packages

install Install a package or packages on your system

list List a package or groups of packages

localinstall Install a local RPM

yum 又可以使用了)

Process the JSON string.

results = simplejson.load(response)

now have some fun with the results…

实际应用中可能需要抓取google的很多网页,所以还需要使用多线程来分担抓取任务。使用google web search api的参考详细介绍,请看此处(这里介绍了Standard URL Arguments)。另外要特别注意,url中参数rsz必须是8(包括8)以下的值,若大于8,会报错的!

(3)代码实现

代码实现还存在问题,但是能够运行,鲁棒性差,还需要进行改进,希望各路大神指出错误(初学Python),不胜感激。

#--coding:utf-8--

import urllib2,urllib

import simplejson

import os, time,threading

import common, html_filter

#input the keywords

keywords = raw_input('Enter the keywords: ')

#define rnum_perpage, pages

rnum_perpage=8

pages=8

#定义线程函数

def thread_scratch(url, rnum_perpage, page):

url_set = []

try:

request = urllib2.Request(url, None, {‘Referer’: ‘http://www.sina.com’})

response = urllib2.urlopen(request)

Process the JSON string.

results = simplejson.load(response)

info = results[‘responseData’][‘results’]

except Exception,e:

print ‘error occured’

print e

else:

for minfo in info:

 url_set.append(minfo['url'])

 print minfo['url']

#处理链接

i = 0

for u in url_set:

try:

request_url = urllib2.Request(u, None, {'Referer': 'http://www.sina.com'})

request_url.add_header(

'User-agent',

'CSC'

)

response_data = urllib2.urlopen(request_url).read()

#过滤文件  

#content_data = html_filter.filter_tags(response_data)  

#写入文件  

filenum = i+page

filename = dir_name+'/related_html_'+str(filenum)

print '  write start: related_html_'+str(filenum)

f = open(filename, 'w+', -1)

f.write(response_data)

#print content_data  

f.close()

print '  write down: related_html_'+str(filenum)

except Exception, e:

print 'error occured 2'

print e

i = i+1

return

#创建文件夹

dir_name = ‘related_html_’+urllib.quote(keywords)

if os.path.exists(dir_name):

print ‘exists file’

common.delete_dir_or_file(dir_name)

os.makedirs(dir_name)

#抓取网页

print ‘start to scratch web pages:’

for x in range(pages):

print “page:%s”%(x+1)

page = x * rnum_perpage

url = (‘https://ajax.googleapis.com/ajax/services/search/web’

             '?v=1.0&q=%s&rsz=%s&start=%s') % (urllib.quote(keywords), rnum_perpage,page)

print url

t = threading.Thread(target=thread_scratch, args=(url,rnum_perpage, page))

t.start()

#主线程等待子线程抓取完

main_thread = threading.currentThread()

for t in threading.enumerate():

if t is main_thread:

continue

t.join()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值