声明中的语法错误

比利·索顿

我正在为Facebook戳写一个机器人。以下是我正在使用的代码:

#!/usr/bin/python
import os
import pycurl
import cStringIO
import re
import time

username = "username"
password = "password"
returnpoke = True
newpoke = True

def login():
    try:
        os.remove("pycookie.txt")
    except:
        pass

    buf = cStringIO.StringIO()
    c = pycurl.Curl()
    c.setopt(pycurl.URL, "http://www.facebook.com")
    c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
    c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
    c.setopt(pycurl.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.ENCODING, "")
    c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
    c.perform()
    curlData = buf.getvalue()
    buf.close()

    charsettest = re.findall(ur"name=\"charset_test\" value=\"([^\"]*)",curlData)
    lgnrnd = re.findall(ur"name=\"lgnrnd\" value=\"([^\"]*)",curlData)
    locale = re.findall(ur"name=\"locale\" value=\"([^\"]*)",curlData)
    lsd = re.findall(ur"name=\"lsd\" value=\"([^\"]*)",curlData)

    persistent = 1
    default_persistent = 1
    timezone = 480
    lgnjs = time.time()
    lgnjs = int(lgnjs)

    postdata = 'charset_test='+charsettest[0]+'&locale='+locale[0]+'&email='+username+'&pass='+password+'&lsd='+lsd[0]+'&default_persistent='+str(default_persistent)+'&lgnjs='+str(lgnjs)+'&lgnrnd='+lgnrnd[0]+'&persistent='+str(persistent)+'&timezone='+str(timezone)

    buf = cStringIO.StringIO()
    c = pycurl.Curl()
    c.setopt(c.URL, "https://login.facebook.com/login.php?login_attempt=1")
    c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
    c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
    c.setopt(pycurl.WRITEFUNCTION, buf.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.ENCODING, "")
    c.setopt(pycurl.SSL_VERIFYPEER, 0)
    c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
    c.setopt(pycurl.POST, 1)
    c.setopt(pycurl.POSTFIELDS, postdata)
    c.setopt(pycurl.POSTFIELDSIZE, len(postdata))
    #c.setopt(pycurl.VERBOSE, True)
    c.perform()
    curlData = buf.getvalue()
    buf.close()
    #print curlData



def poke():
    #enter infinite poke loop
    while True:
        buf = cStringIO.StringIO()
        c = pycurl.Curl()
        c.setopt(pycurl.URL, "https://www.facebook.com/pokes?notif_t=poke")
        c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
        c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
        c.setopt(pycurl.WRITEFUNCTION, buf.write)
        c.setopt(pycurl.FOLLOWLOCATION, 1)
        c.setopt(pycurl.ENCODING, "")
        c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
        c.perform()
        curlData = buf.getvalue()
        buf.close()
        #print curlData
        pokebackdata = re.findall(ur"<div class=\"pokeHeader fsl fwb fcb\"><a href=\"(.*?)\" data-hovercard=\"\/ajax\/hovercard\/user.php\?id=([0-9]*)\">([^<]*)<\/a> has poked you.<\/div>",curlData)
        pokesuggestdata = re.findall(ur"<div class=\"userSuggestionName\"><span class=\"fwb\"><a href=\"https:\/\/www.facebook.com\/(.*?)\" data-hovercard=\"\/ajax\/hovercard\/user.php\?id=([0-9]*)\">([^<]*)<\/a><\/span><\/div>",curlData)
        #print pokebackdata
        userid = re.findall(ur"\"user\":\"([0-9]*)\"",curlData)
        fb_dtsg = re.findall(ur"name=\"fb_dtsg\" value=\"([^\"]*)",curlData)

        if len(pokesuggestdata)>0 and newpoke:
            for victim in pokesuggestdata:
                victimid = victim[1]
                postdata = '__a=1&nctr[_mod]=pagelet_pysp&suggestion=1&__user='+str(userid[0])+'&fb_dtsg='+fb_dtsg[0]+'&uid='+str(victimid)
                buf = cStringIO.StringIO()
                c = pycurl.Curl()
                c.setopt(c.URL, "https://www.facebook.com/ajax/pokes/poke_inline.php")
                c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
                c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
                c.setopt(pycurl.WRITEFUNCTION, buf.write)
                c.setopt(pycurl.FOLLOWLOCATION, 1)
                c.setopt(pycurl.ENCODING, "")
                c.setopt(pycurl.SSL_VERIFYPEER, 0)
                c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
                c.setopt(pycurl.POST, 1)
                c.setopt(pycurl.POSTFIELDS, postdata)
                c.setopt(pycurl.POSTFIELDSIZE, len(postdata))
                #c.setopt(pycurl.VERBOSE, True)
                c.perform()
                curlData = buf.getvalue()
                buf.close()
                print "You poked "+victim[2]+"!"

        if len(pokebackdata)>0 and returnpoke:
            for victim in pokebackdata:
                victimid = victim[1]
                postdata = '__a=1&nctr[_mod]=pagelet_pokes&pokeback=1&__user='+str(userid[0])+'&fb_dtsg='+fb_dtsg[0]+'&uid='+str(victimid)
                buf = cStringIO.StringIO()
                c = pycurl.Curl()
                c.setopt(c.URL, "https://www.facebook.com/ajax/pokes/poke_inline.php")
                c.setopt(pycurl.COOKIEFILE, "pycookie.txt")
                c.setopt(pycurl.COOKIEJAR, "pycookie.txt")
                c.setopt(pycurl.WRITEFUNCTION, buf.write)
                c.setopt(pycurl.FOLLOWLOCATION, 1)
                c.setopt(pycurl.ENCODING, "")
                c.setopt(pycurl.SSL_VERIFYPEER, 0)
                c.setopt(pycurl.USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)")
                c.setopt(pycurl.POST, 1)
                c.setopt(pycurl.POSTFIELDS, postdata)
                c.setopt(pycurl.POSTFIELDSIZE, len(postdata))
                #c.setopt(pycurl.VERBOSE, True)
                c.perform()
                curlData = buf.getvalue()
                buf.close()
                print "You return poked "+victim[2]+"!"

        else:
            time.sleep(3)


def main():
    login()
    poke()

if __name__ == "__main__":
    main()

在第32行,我得到以下错误:

charsettest = re.findall(ur"name=\"charset_test\" value=\"([^\"]*)",curlData)

是无效的语法。我看不出有什么问题,并且语法错误是。有人可以帮我这行的语法吗?在此先感谢您的帮助,我真的很感激!

阿维纳什·拉吉(Avinash Raj)

只需删除uur"regex"声明中的内容即可。

charsettest = re.findall(r"name=\"charset_test\" value=\"([^\"]*)",curlData)

您可以按顺序在单引号中编写上述正则表达式,以避免转义双引号。

charsettest = re.findall(r'name="charset_test" value="([^"]*)"',curlData)

例子:

>>> s = '345foo56'
>>> re.findall(r'\d+', s)
['345', '56']
>>> re.findall(ur'\d+', s)
SyntaxError: invalid syntax
>>> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

函数中的声明语法错误

来自分类Dev

函数中的声明语法错误

来自分类Dev

布尔声明的语法错误

来自分类Dev

语法错误:在const声明Firefox 50中缺少=

来自分类Dev

数据声明中的fortran循环语法错误

来自分类Dev

C结构声明中的SWIG语法错误

来自分类Dev

在C中的变量声明上获取语法错误

来自分类Dev

尝试在sql中声明变量并使用if-else语句时出现语法错误。-“ VARCHAR”或附近的语法错误

来自分类Dev

mariadb声明变量语法错误

来自分类Dev

语法错误在MariaDB的声明变量

来自分类Dev

声明postgres变量时的语法错误

来自分类Dev

java JApplet声明语法错误

来自分类Dev

语法错误:丢失;声明jsonp之前

来自分类Dev

语法错误:缺少; 声明前

来自分类Dev

VHDL 通用组件声明语法错误

来自分类Dev

错误:令牌语法错误,程序包声明部分中的构造放置错误

来自分类Dev

ReactJS中的语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

Erlang中的语法错误

来自分类Dev

IE中的语法错误

来自分类Dev

coffeescript中的语法错误

来自分类Dev

Conda中的语法错误

来自分类Dev

继承中的语法错误

来自分类Dev

IE中的语法错误

来自分类Dev

VBA 中的语法错误

来自分类Dev

awk 中的语法错误

来自分类Dev

在bash中声明数组时出现错误“语法错误:“(”意外“

来自分类Dev

错误C2059:语法错误:结构成员声明中的“常量”

来自分类Dev

在bash中声明数组时出现错误“语法错误:“(”意外“