python中的线程、正则表达式

一、python中的线程复杂度较高,不提倡用,看了几个视频,觉得跟Java的定义和使用方式大同小异,不得不说,python和Java的相似度还是蛮高的。用python多线程的地方:抓取网页时候url分析、数据库连接池。

二、python中的正则表达式与别的语言一样,在抓取网页的时候分析url地址中常常被使用。

只有将其用在实战的场景中才会去想怎么用好,为了不至于博文太空虚,还是贴一下,前段时间写的给女朋友抓取网上图片的小爬虫吧,我知道写的很渣,实际上那时候对于Python还是不太懂:

import urllib2
import re
import os
import uuid
import urllib
def getHtml(url):
    page=urllib2.urlopen(url)
    html=page.read()
    return html

def deleteDuplicatedElementFromList2(list):
    resultList = []
    for item in list:
            if not item in resultList:
                    resultList.append(item)
    return resultList
    
def getLink(html):
    reg=r'href="http://www.amazon.com/Diesel\S*refinements=p_89%3ADiesel'
    '''
    '''
    htmlLink=re.compile(reg)
    Link=re.findall(htmlLink, html)
    lastLink=deleteDuplicatedElementFromList2(Link)
    return lastLink

def getlastlink(html):
    reg=r'http://demandware.edgesuite.net/aatd_prd/on/demandware.static/-/Sites-cog-men-master/default/\S*jpg'
    '''
   src="http://ecx.images-amazon.com/images/I/91sFieFTvbL._UY879_.jpg"
   
   '''
    htmlLink=re.compile(reg)
    Link=re.findall(htmlLink, html)
    lastLink=deleteDuplicatedElementFromList2(Link)
    return lastLink

def createFileWithFileName(localPathParam,fileName):
    totalPath=localPathParam+'\\'+fileName
    if not os.path.exists(totalPath):
        file=open(totalPath,'a+')
        file.close()
        print totalPath;
        return totalPath
def getAndSaveImg(imgUrl,name):
    if( len(imgUrl)!= 0 ):
        urllib.urlretrieve(imgUrl,createFileWithFileName(Path,name))
        print('saved successed!')

Path='d:\\pythonp'
html1="http://www.amazon.cn/s/ref=lp_2154530051_pg_"#"http://www.amazon.com/gp/search/ref=sr_pg_"
html2="?rh=n%3A2016156051%2Cn%3A%212016157051%2Cn%3A2152155051%2Cn%3A2154530051&page=2&ie=UTF8&qid=1451709046";
i=0
j=1


while j<2:
    htmls=html1+str(j)+html2;
    print htmls
    #print getHtml(htmls)
    deeperlink=getLink(getHtml(htmls)) 
    print len(deeperlink)
    for link in deeperlink:
        try:
            print link
            links=link[6:]
            
            linkss="http://www.mrp.com"+links
            print linkss
            imaglinks=getlastlink(getHtml(linkss))
            #print getHtml(links)
            print len(imaglinks)
            print imaglinks
        except Exception:
            pass
        for imaglink in imaglinks:
            try:
                print imaglink
                imagname='aa'+str(i)+'.jpg'
                getAndSaveImg(imaglink,imagname)       
            except Exception:
                pass
            finally:
                i+=1
                print j
    j+=1
    
所有的东西还是要用起来,如果不用的话, 做起来和学起来一点动力都没有,也觉得没有深究的意义,还是要写一写高级的东西的,不然一直都是这么low。







































你可能感兴趣的:(python中的线程、正则表达式)