def getAllLinks(url):#获取首页链接的所有子链接
html1=str(urllib.request.urlopen(url).read())
pat=''
allLink=re.compile(pat).findall(html1)
allLinks=[]
for link in allLink:
allLinks.append(link.split('"')[0])
return allLinks
'
allLink=str(re.compile(pat2).findall(html1)).strip('\n').replace('','').replace('\\n','').replace('\\t','')
allLink=allLink.split('')
allLinks=[]
for i in range(1,len(allLink)):
allLinks.append(allLink[i].split('">')[0])
allLinks=list(set(allLinks))
return allLinks
'
version=str(re.compile(pat).findall(html))
if version!='[]':
version=version.split('')[1].split('')[0]
return version
def getSize(html):#大小
pat='大小[\s\S]*
分类
'
size=str(re.compile(pat).findall(html))
if size!='[]':
size=size.split('')[1].split('')[0].strip('\n').replace('','').replace('\\n','')#strip删除本身的换行,删除中文的空格,删除\n字符return size
def getImages(html):#所有截屏的链接
pat='
[\s\S]*
'
images1=str(re.compile(pat).findall(html))
pat1='http://[\s\S]*.jpg'
images=[]
images1=str(re.compile(pat1).findall(images1))
if images1!='[]':
images1=images1.split('http://')
for i in range(1,len(images1)):
images.append(images1[i].split('.jpg')[0]+'.jpg')
return images
def getAbstract(html):#简介
pat='
[\s\S]*
'
abstract=str(re.compile(pat).findall(html))
if abstract=='[]':
pat='
[\s\S]*
'
abstract=str(re.compile(pat).findall(html))
if abstract!='[]':
abstract=abstract.split('description">')[1].split('
'
update=str(re.compile(pat).findall(html))
if update!='[]':
update=update.split('"con">')[1].split('
')[0].replace(' ','').replace(' ','')#strip删除本身的换行,删除中文的空格,删除\n字符return update
def getCompany(html):#开发公司
pat='[\s\S]*'
com=str(re.compile(pat).findall(html))
if com!='[]':
com=com.split('"name">')[1].split('<')[0]#strip删除本身的换行,删除中文的空格,删除\n字符return com
def getClass(html):#所属分类
pat='
[\s\S]*
TAG
'
classfy1=str(re.compile(pat).findall(html))
classfy=[]
if classfy1!='[]':
classfy1=classfy1.split('appTag">')
for i in range(1,len(classfy1)):
classfy.append(classfy1[i].split('<')[0])
return classfy
def getTag(html):#标有的Tag
pat='
[\s\S]*
更新
'
tag1=str(re.compile(pat).findall(html))
tag=[]
if tag1!='[]':
tag1=tag1.strip('\n').replace('','').replace('\\n','').split('')
for i in range(0,len(tag1)-1):
tag.append(tag1[i].replace('','').replace('','').replace('
','').split('>')[1])
return tag
def getDownLink(html):#下载链接
pat='
[\s\S]*
'
link=str(re.compile(pat).findall(html))
if link!='[]':
link=link.split('href="http://')[1].split('" rel="nofollow"')[0]
return link
def getComment(html):#评论内容(只包含10条,因为网页只显示有限)
pat='
[\s\S]*
'
comm=str(re.compile(pat).findall(html))
comms=''
eval_descs=[]
if comm!='[]':
comms=comm.strip('\n').replace('','').replace('\\n','').split('')
for i in range(1,len(comms)-1):
userName=comms[i].split('name">')[1].split('<')[0]
time=comms[i].split('')[1].split('<')[0]
evalDesc=comms[i].split('content">')[1].split('<')[0]
eval_desc={'userName':userName,'time':time,'evalDesc':evalDesc}
eval_descs.append(eval_desc)
# comm=comm.split('href="http://')[1].split('" rel="nofollow"')[0]return eval_descs
for link in getAllLinks(url):
print(link)
for i in range(1,42):#由于豌豆荚给的最大是42页,所以这里用42,反正如果没有42,也会很快print(i)
for descLink in getAllDescLinks(link,i):
print(descLink)
getAllInfo(descLink)
public class Power {
/**
*Q71-数值的整数次方
*实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。
*/
private static boolean InvalidInput=false;
public static void main(
实现两个WEB之间通过session 共享数据
查看tomcat 关于 HTTP Connector 中有个emptySessionPath 其解释如下:
If set to true, all paths for session cookies will be set to /. This can be useful for portlet specification impleme
Parses a raw HTTP request using yii\helpers\Json::decode()
To enable parsing for JSON requests you can configure yii\web\Request::$parsers using this class:
'request' =&g
Sort a linked list in O(n log n) time using constant space complexity.
====analysis=======
mergeSort for singly-linked list
====code======= /**
* Definition for sin
我使用的是ubuntu13.04系统,在安装nginx的时候遇到如下几个问题,然后找思路解决的,nginx 的下载与安装
wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar zxvf nginx-1.0.11.tar.gz
./configure
make
make install
安装的时候出现
在系统开发过程中,总少不免要自己处理一些异常信息,然后将异常信息变成友好的提示返回到客户端的这样一个过程,之前都是new一个自定义的异常,当然这个所谓的自定义异常也是继承RuntimeException的,但这样往往会造成异常信息说明不一致的情况,所以就想到了用枚举来解决的办法。
1,先创建一个接口,里面有两个方法,一个是getCode, 一个是getMessage
public
将信息插入SQL数据库,这里注意execute后面用的占位符是?,之前我看了很多其他的资料,用的是%s,报错了,最无语的是报错居然还乱码了。
数据库创建代码如下:
调用获取所有信息、打印并插入数据库:
最后,循环调用,获取全部的信息:
最后打印的结果如下图:
存储到sql数据库的图片如下: