0

我正在使用请求来抓取网站。html 的内容成功保存在变量 r 中,但在 if 语句中我得到了上述错误

[...]
for line in r:  
    link = re.findall(r ("""onclick="window.location.href='([^'])'""",line)
    if link: 
        print ('something')
        cmd = ('some commands to get info page') 
        call(cmd,shell=True)

        download = re.sub(something)
        cmd = ('some commands to download the file') 
        call(cmd,shell=True)
r.close()

我在文档中查找了它,语法似乎是正确的。然后我怀疑错误是在之前的行中。这里我搜索带有短语onclick="window.location.href='的行,并希望处理它后面的链接(在之后的代码中)。 () 封装的部分应该是返回的内容,对吧?

有人看到错误吗?在

4

3 回答 3

2

也许是括号?

#                1  2                                                 2                   
link = re.findall(r ("""onclick="window.location.href='([^'])'""",line)

您似乎忘记关闭 findall 的支架。

于 2012-06-15T13:37:08.167 回答
0

您似乎有不匹配的括号和不匹配的引号。下面,我把它们排成一行。这是否按预期工作?

#                1  2                                  3    3           21
#                    123        4                              4321
link = re.findall(r ("""onclick="window.location.href='([^'])'\"""",line))
于 2012-06-15T13:42:20.450 回答
0

如果您将模式与自己的行分开,那么很明显问题实际上只是引用之一。尝试像这样分开它:

for line in r:
    pattern = r"onclick=\"window.location.href='([^'])'"
    link = re.findall(pattern, line)
于 2012-06-15T13:45:28.547 回答