【问题标题】:Regex weirdness in python :) [closed]python中的正则表达式怪异:) [关闭]
【发布时间】:2015-01-24 00:01:37
【问题描述】:

我正在尝试使用 phantomjs 制作一个浏览机器人,但在某些情况下,它对于我需要的使用来说不够健壮,并且当某些请求失败时,无法选择重试它们。在这些情况下,我会回显失败或可能失败的请求以及当时浏览器中的 cookie。然后我在 python 脚本中获取信息并从中发出请求。我使用正则表达式从字符串中收集信息,然后继续使用 pycurl 发出请求。我附上了处理下面字符串的python函数。 当我在 test.py 脚本上单独使用该功能时,该功能效果很好,但是当我将其添加到主 python 脚本时它不起作用,即使解释器是相同的,相同的机器和文件夹,为什么会这样发生这种情况?

功能:

def getReqs(interface_text):
    if("<van LAST_LOAD>" in interface_text):
        interface_text=str(interface_text[interface_text.rfind("<van LAST_LOAD>"):])
        cookie_req=re.findall(r"<van[^>]*?type='cookies'[^>]*?>([\s\S]*?)</van>[^<]*?<van[^>]*?type='link_taken'[^>]*?href='([^']*?)'>",interface_text)
        topclicks=re.findall(r"<van[^>]*?type='top_request'[^>]*?href='([^']*?)'>",interface_text)
        imgclicks=re.findall(r"<van[^>]*?type='image_request'[^>]*?href='([^']*?)'>",interface_text)
        ind=list()
        for d in cookie_req:
            cooks=re.findall(r"([\S]*?)\t\t([\S]*?)\t\t([\S]*?)\t\t(\d+)",d[0])
            rr=dict()
            rr['cookies']=cooks
            rr['request']=d[1].strip()  
            type_='image'       
            for d in topclicks:
                if(rr['request']==d.strip()): type_='toplink'
            rr['type']=type_
            ind.append(rr)
        return ind
    else:
        return False

字符串:

New URL: http://domain.com/
Request (http://domain.com/css/style.css): 
Request (http://domain.com/tp/filter.php?pro=936): 
Request (http://domain.com/tp/a_ft.php?rand=5): 
<van LAST_LOAD>
Processing images and getting hidden ones
Request (http://domain.com/tp/img.php): 
Images with width set to over 85 67
Done processing images.
Checking Resourse Status
Resourse retrieval status: Started/Full F http://domain.com/
Resourse retrieval status: Started/Full F http://domain.com/css/style.css
Resourse retrieval status: Started/Full F http://domain.com/tp/filter.php?pro=936
Resourse retrieval status: Started/Full F http://domain.com/tp/a_ft.php?rand=5
Resourse retrieval status: Started/Full F http://domain.com/tp/img.php    
Phantom will exit in 33775




    Reclicking




    Clicking Image
    Random Click: 5
    <van type='image_request' href='http://www.domain.com/st/thumbs/238/YOWF8GaqIz.jpg'>
    Dims: 204,514,240,180
    Global mouse position 0 0
    Moving to mouse to 635 295
    mouse moved
    Trying to navigate to: http://domain.com/gallery/www.html?id=437&x=8715eb135db63642cda1ec1c19e8d529&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE1MDEyL2FtYXRldXItcnVzc2lhbi1zZXgtdGFwZQ==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 5
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/www.html?id=437&x=8715eb135db63642cda1ec1c19e8d529&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE1MDEyL2FtYXRldXItcnVzc2lhbi1zZXgtdGFwZQ==&s=1'>




    Reclicking




    Clicking Image
    Random Click: 3
    <van type='image_request' href='http://www.domain.com/st/thumbs/730/PGy0TRimJJ.jpg'>
    Dims: 204,22,240,180
    Global mouse position 635 295
    Moving to mouse to 143 295
    mouse moved
    Trying to navigate to: http://domain.com/gallery/sss.html?id=424&x=e3ad16bcdc583a324acbc3a83f654a7a&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE2Mjk5L3RvdWNoaW5nLWJlYXV0eXMtanVpY3ktc3BvdA==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 4
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/sss.html?id=424&x=e3ad16bcdc583a324acbc3a83f654a7a&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE2Mjk5L3RvdWNoaW5nLWJlYXV0eXMtanVpY3ktc3BvdA==&s=1'>




    Reclicking




    Clicking Image
    Random Click: 7
    <van type='image_request' href='http://www.domain.com/st/thumbs/867/uLzPrb0K45.jpg'>
    Dims: 424,22,240,180
    Global mouse position 143 295
    Moving to mouse to 143 515
    mouse moved
    Trying to navigate to: http://domain.com/gallery/aaa.html?id=466&x=8dcbd277bf725b468c7933cc81692be0&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTExMzQ0L3doaXRlLWFuZC1ibGFjay10ZWVuLWJhYmVzLW1hc3R1cmJhdGluZw==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 3
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/aaa.html?id=466&x=8dcbd277bf725b468c7933cc81692be0&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTExMzQ0L3doaXRlLWFuZC1ibGFjay10ZWVuLWJhYmVzLW1hc3R1cmJhdGluZw==&s=1'>

另一方面,此代码返回一个空列表。

#!/usr/bin/python
#mysql* MySQL*
__author__ = 'root'
import MySQLdb
import sys
import random
import subprocess 
import re
import time
import pycurl
import cStringIO
import tldextract




def mergeCookies(cookieList,cookieFile):
    data = open(cookieFile,'r').read()
    precooks=re.findall(ur"([\S]*?)\t([\S]*?)\t([\S]*?)\t([\S]*?)\t([\S]*?)\t([\S]*?)\t([\S]+)",data)
    total="""# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

"""
    keeper= list()
    for old in precooks:
        refresh=False
        for new in cookieList:
            print str(old[0]).strip()
            new_parse=tldextract.extract(new[0])
            old_parse=tldextract.extract(old[0])
            if (new_parse[1].strip()==old_parse[1].strip() and str(new[1]).strip()==str(old[5]).strip() and not(str(old[0]).strip()+str(old[5]).strip() in keeper or str(new[0]).strip()+str(new[1]).strip() in keeper)):
                total+=str(old[0]).strip()+"\t"+"TRUE"+"\t"+"/\tFALSE\t1579998218\t"+str(new[1]).strip()+"\t"+str(new[2]).strip()+"\n"
                keeper.append(str(old[0]).strip()+str(old[5]).strip())
                keeper.append(str(new[0]).strip()+str(new[1]).strip())
                refresh=True
        if(not refresh):
            total+=str(old[0]).strip()+"\t"+"TRUE"+"\t"+"/\tFALSE\t1579998218\t"+str(old[5]).strip()+"\t"+str(old[6]).strip()+"\n"
    for new in cookieList:          
        if(not(str(new[0]).strip()+str(new[1]).strip() in keeper)):             
            total+=str(new[0]).strip()+"\t"+"TRUE"+"\t"+"/\tFALSE\t1579998218\t"+str(new[1]).strip()+"\t"+str(new[2]).strip()+"\n"
            keeper.append(str(new[0]).strip()+str(new[1]).strip())
    open(cookieFile,'w').write(total)
def hitFormGetProxy(url,cookieFile,cookieList,proxy,lang,agent,referer,type_,theCol): 
    times=0
    mergeCookies(cookieList,cookieFile)
    while True:
        times+=1
        c = pycurl.Curl()
        buff = cStringIO.StringIO()
        c.setopt(c.URL, url)
        c.setopt(c.WRITEFUNCTION, buff.write)
        c.setopt(c.COOKIEFILE, cookieFile)
        c.setopt(c.COOKIEJAR, cookieFile)
        c.setopt(c.AUTOREFERER, True)
        #c.setopt(c.COOKIESESSION, True)
        #c.setopt(c.COOKIE, cookieString)
        c.setopt(c.FAILONERROR, False)
        c.setopt(c.FOLLOWLOCATION, True)
        c.setopt(c.VERBOSE, True)
        c.setopt(c.PROXY, proxy)
        c.setopt(c.CONNECTTIMEOUT, 10)
        c.setopt(c.TIMEOUT, 25)
        c.setopt(c.MAXREDIRS, 10)
        c.setopt(c.ENCODING, 'gzip,deflate,sdch')
        c.setopt(c.SSL_VERIFYHOST, False)
        c.setopt(c.SSL_VERIFYPEER, False)
        c.setopt(c.FRESH_CONNECT, True)
        c.setopt(c.HEADER, False)
        c.setopt(c.HTTPHEADER, ['Accept-Language: '+str(lang)+'','Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3'])
        #c.setopt(c.RETURNTRANSFER, True)
        c.setopt(c.USERAGENT, agent)
        c.setopt(c.REFERER, referer)
        #c.setopt(c.HTTPHEADER, ['Accept: text/html', 'Accept-Charset: UTF-8'])
        c.perform()
        if(not (c.getinfo(pycurl.HTTP_CODE) == 200 or c.getinfo(pycurl.HTTP_CODE)==302 or c.getinfo(pycurl.HTTP_CODE)==301) and times>7):
            if (type_ != 'payed'):
                print "setting proxy offline"
                # cur.execute("UPDATE `proxies` SET `status`='inactive',`last_checked`='"+str(int(time.time()))+"' WHERE `proxy`='"+str(proxy)+"'")
                # cur.execute("UPDATE  `proxies` SET  `"+str(theCol)+"` =  '"+str(int(time.time()))+"',`connections`= `connections`-1 WHERE  `proxies`.`proxy` =  '"+str(proxy)+"';")
            quit()
        elif(len(buff.getvalue())>500):
            unallowed=False
            global unallowed_urls
            dmain=tldextract.extract(c.getinfo(pycurl.EFFECTIVE_URL))
            for url in unallowed_urls:
                dmainurl=tldextract.extract(url)
                if(dmain[1].strip()==dmainurl[1].strip()):
                    unallowed=True
            if(not unallowed):
                ret=buff.getvalue()
                buff.close()
                return ret
            else:
                print "visiting unallowed url"
                break;
        elif(times>12):break




def getReqs(interface_text):
    if("<van LAST_LOAD>" in interface_text):
        interface_text=str(interface_text[interface_text.rfind("<van LAST_LOAD>"):])
        cookie_req=re.findall(r"<van[^>]*?type='cookies'[^>]*?>([\s\S]*?)</van>[^<]*?<van[^>]*?type='link_taken'[^>]*?href='([^']*?)'>",interface_text)
        topclicks=re.findall(r"<van[^>]*?type='top_request'[^>]*?href='([^']*?)'>",interface_text)
        imgclicks=re.findall(r"<van[^>]*?type='image_request'[^>]*?href='([^']*?)'>",interface_text)
        ind=list()
        for d in cookie_req:
            cooks=re.findall(r"([\S]*?)\t\t([\S]*?)\t\t([\S]*?)\t\t(\d+)",d[0])
            rr=dict()
            rr['cookies']=cooks
            rr['request']=d[1].strip()  
            type_='image'       
            for d in topclicks:
                if(rr['request']==d.strip()): type_='toplink'
            rr['type']=type_
            ind.append(rr)
        return ind
    else:
        return False
def escapeshellarg(arg):
        """
        :param arg:
        :return: escaped string for ussage as console argument
        """
        return "\\'".join("'" + p + "'" for p in arg.split("'"))
#output = (Popen(["/usr/bin/java", "-jar", os.path.dirname(os.path.realpath(__file__))+"/headFinder.jar", self.escapeshellarg(str(tree))], stdout=PIPE).communicate()[0]).strip('')

def getSite(a):
    file_ = open('bot'+str(a)+'.ini','r').read()
    p = re.compile(ur'REFERER:([^;]*?);')
    m = re.search(p, file_)
    toReturn = m.group(1)
    return str(toReturn).strip()

def proxy_status(str):
    p = re.compile(ur'<van[^>]*?name=\'proxy_status\'[^>]*?value=\'([^\']*?)\'[^>]*?>')
    m = re.search(p, str)
    toReturn = m.group(1)
    return toReturn

def random_tier(a):
    data = open(a,'r').read()
    data = data.split("}")
    probs = data[1].strip().split('|')
    num=random.randint(0,100)
    totes=0
    toReturn = ''
    for x in range(0,len(probs)-1):
        if(num>totes and num<= totes + int(probs[x].strip())): toReturn = data[x+2] 
        totes+=int(probs[x].strip())        
    return toReturn.strip()

def Random_Lang():
    data = open('language.txt','r').read()
    data = data.split("}")
    probs = data[1].strip().split('|')
    num=random.randint(0,100)
    totes=0
    toReturn = ''
    for x in range(0,len(probs)-1):
        if(num>totes and num<= totes + int(probs[x].strip())): toReturn = data[x+2] 
        totes+=int(probs[x].strip())        
    return toReturn.strip()
def Random_Agent():
    num=random.randint(0,100)
    if(num<16) : return random_tier("IE.txt")
    elif(num>16 and num<=48) : return random_tier("firefox.txt")
    elif(num>48 and num<=93) : return random_tier("CHROME.txt")
    elif(num>93 and num<=97) : return random_tier("safari.txt")
    elif(num>97 and num<=100) : return random_tier("opera.txt")
def Get_Trade(cur,colnum,threadnum):
    print "SELECT * FROM trades_"+str(threadnum)+" WHERE position = '"+str(colnum)+"'"
    cur.execute("SELECT * FROM trades_"+str(threadnum)+" WHERE position = '"+str(colnum)+"'")
    try :
        if (cur.rowcount > 0):
            fetch = cur.fetchall()
            return fetch[0][1],fetch[0][2]
        else:
            print "Found No Trade In That Position !"
            time.sleep(8)
            quit()
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL Error: %s" % str(e)
        time.sleep(8)
        quit()
def GetPayedProxy(cur,theCol):
    print "SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `PAYMENT`='sharedproxies' and `connections`<3"
    cur.execute("SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `PAYMENT`='sharedproxies' and `connections`<3")
    try :
        if (cur.rowcount > 0):
            fetch = cur.fetchall()
            return fetch[0][0],'payed'
        else:
            print "Found No Shared Proxies available at this time !"
            time.sleep(2)
            return False,False
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL Error: %s" % str(e)
        time.sleep(2)
        return False,False
def GetScannedProxy(cur,theCol):
    print "SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `PAYMENT`='scanner' and `connections`<3"
    cur.execute("SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `PAYMENT`='scanner' and `connections`<3")
    try :
        if (cur.rowcount > 0):
            fetch = cur.fetchall()
            return fetch[0][0],'scanned'
        else:
            print "Found No Scanned Proxies available at this time !"
            time.sleep(2)
            return False,False
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL Error: %s" % str(e)
        time.sleep(2)
        return False,False
def GetTTProxy(cur,theCol):
    print "SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and (`tier`='1' or `tier`='2') and `response_time`<10 and `PAYMENT`!='sharedproxies' and `PAYMENT`!='scanner' and `connections`<3"
    cur.execute("SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and (`tier`='1' or `tier`='2') and `response_time`<10 and `PAYMENT`!='sharedproxies' and `PAYMENT`!='scanner' and `connections`<3")
    try :
        if (cur.rowcount > 0):
            fetch = cur.fetchall()
            return fetch[0][0],'tt'
        else:
            print "Found No T1 T2 Proxies available at this time !"
            time.sleep(2)
            return False,False
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL Error: %s" % str(e)
        time.sleep(2)
        return False,False
def GetT3Proxy(cur,theCol):
    print "SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `tier`='3' and `response_time`<10 and `PAYMENT`!='sharedproxies' and `PAYMENT`!='scanner' and `connections`<3"
    cur.execute("SELECT * FROM `proxies` WHERE `"+str(theCol)+"`<'"+str(int(time.time()) - 86400)+"' and `status`='active' and `response`='200' and `tier`='3' and `response_time`<10 and `PAYMENT`!='sharedproxies' and `PAYMENT`!='scanner' and `connections`<3")
    try :
        if (cur.rowcount > 0):
            fetch = cur.fetchall()
            return fetch[0][0],'t3'
        else:
            print "Found No T3 Proxies available at this time !"
            time.sleep(2)
            return False,False
    except MySQLdb.Error, e:
        try:
            print "MySQL Error [%d]: %s" % (e.args[0], e.args[1])
        except IndexError:
            print "MySQL Error: %s" % str(e)
        time.sleep(2)
        return False,False
def Get_Proxy(cur,theCol):
    print "Trying to get Shared Proxy"
    proxy,type=GetPayedProxy(cur,theCol)
    if(proxy==False or type == False):
        print "Trying to get Scanned Proxy"
        proxy,type=GetScannedProxy(cur,theCol)
        if(proxy==False or type == False):
            print "Trying to get T1 T2 Proxy"
            proxy,type=GetTTProxy(cur,theCol)
            if(proxy==False or type == False):
                print "Trying to get T3 Proxy"
                proxy,type=GetT3Proxy(cur,theCol)
                if(proxy==False or type == False):
                    print "No proxies available at this time!!!"
                else:
                    return proxy,type
            else:
                return proxy,type
        else:
            return proxy,type
    else:
        return proxy,type

def getReqs(interface_text):
    toReturn = dict()

    return toReturn
if __name__=='__main__':
    data="""New URL: http://domain.com/
Request (http://domain.com/css/style.css): 
Request (http://domain.com/tp/filter.php?pro=936): 
Request (http://domain.com/tp/a_ft.php?rand=5): 
<van LAST_LOAD>
Processing images and getting hidden ones
Request (http://domain.com/tp/img.php): 
Images with width set to over 85 67
Done processing images.
Checking Resourse Status
Resourse retrieval status: Started/Full F http://domain.com/
Resourse retrieval status: Started/Full F http://domain.com/css/style.css
Resourse retrieval status: Started/Full F http://domain.com/tp/filter.php?pro=936
Resourse retrieval status: Started/Full F http://domain.com/tp/a_ft.php?rand=5
Resourse retrieval status: Started/Full F http://domain.com/tp/img.php    
Phantom will exit in 33775




    Reclicking




    Clicking Image
    Random Click: 5
    <van type='image_request' href='http://www.domain.com/st/thumbs/238/YOWF8GaqIz.jpg'>
    Dims: 204,514,240,180
    Global mouse position 0 0
    Moving to mouse to 635 295
    mouse moved
    Trying to navigate to: http://domain.com/gallery/www.html?id=437&x=8715eb135db63642cda1ec1c19e8d529&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE1MDEyL2FtYXRldXItcnVzc2lhbi1zZXgtdGFwZQ==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 5
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/www.html?id=437&x=8715eb135db63642cda1ec1c19e8d529&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE1MDEyL2FtYXRldXItcnVzc2lhbi1zZXgtdGFwZQ==&s=1'>




    Reclicking




    Clicking Image
    Random Click: 3
    <van type='image_request' href='http://www.domain.com/st/thumbs/730/PGy0TRimJJ.jpg'>
    Dims: 204,22,240,180
    Global mouse position 635 295
    Moving to mouse to 143 295
    mouse moved
    Trying to navigate to: http://domain.com/gallery/sss.html?id=424&x=e3ad16bcdc583a324acbc3a83f654a7a&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE2Mjk5L3RvdWNoaW5nLWJlYXV0eXMtanVpY3ktc3BvdA==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 4
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/sss.html?id=424&x=e3ad16bcdc583a324acbc3a83f654a7a&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTE2Mjk5L3RvdWNoaW5nLWJlYXV0eXMtanVpY3ktc3BvdA==&s=1'>




    Reclicking




    Clicking Image
    Random Click: 7
    <van type='image_request' href='http://www.domain.com/st/thumbs/867/uLzPrb0K45.jpg'>
    Dims: 424,22,240,180
    Global mouse position 143 295
    Moving to mouse to 143 515
    mouse moved
    Trying to navigate to: http://domain.com/gallery/aaa.html?id=466&x=8dcbd277bf725b468c7933cc81692be0&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTExMzQ0L3doaXRlLWFuZC1ibGFjay10ZWVuLWJhYmVzLW1hc3R1cmJhdGluZw==&s=1
    Caused by: LinkClicked
    Will actually navigate: false
    Sent from the page's main frame: false
    Expected links: 3
    <van type='cookies'>
    domain.com      proimg      93ffe5      1417031956
    domain.com      pro_cc3     394ef8df2b      1417031956
    domain.com      pro_cc2     3377058     1417031956
    domain.com      fav     1416945556      1448481556
    domain.com      tp      MXwwfDE0MTY5NDU1NTZ8MTQxNjk0NTU1NnwwO3Rlc3QyMS5jb20=        1417031956
    </van>
    <van type='link_taken' href='http://domain.com/gallery/aaa.html?id=466&x=8dcbd277bf725b468c7933cc81692be0&url=aHR0cDovL3d3dy5kcnR1YmVyLmNvbS92aWRlby8xOTExMzQ0L3doaXRlLWFuZC1ibGFjay10ZWVuLWJhYmVzLW1hc3R1cmJhdGluZw==&s=1'>"""
    print getReqs(data)
    quit()

【问题讨论】:

  • “效果很好”与“效果不好”是什么意思?
  • 更重要的是,这是一个巨大的代码和输出转储,几乎没有解释我们应该查看哪些部分。你能把这个减少到minimal, complete, verifiable example吗?
  • @abarnert 您可以使用字符串作为参数调用该函数,它将返回我正在查找的字典列表。至少当我自己运行它时它会这样做,当我在主脚本中运行它时它会返回一个空列表。
  • 当我将该函数粘贴到我的解释器中并在该字符串上调用它时,我会返回 False,而不是字典列表。这一点也不奇怪,因为字符串中没有任何接近 &lt;van LAST_LOAD&gt; 的内容。
  • 当然看起来像 DOM(或其他类似的结构 cough href= cough),但没关系,因此我最初犹豫是否要关闭。祝你好运!

标签: javascript python regex phantomjs


【解决方案1】:

您在第 103 行定义了 getReqs 函数。

然后,在第 287 行,您将这个定义替换为这个:

def getReqs(interface_text):
    toReturn = dict()

    return toReturn

所以,当你在第 395 行这样调用它时:

print getReqs(data)

...您调用的是第二个定义,因此打印出一个空字典也就不足为奇了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多