我目前收到了这个错误,不知道这是什么意思。这是一个糟糕的python项目,这是我看到的错误:
File "/bp_scraper/bp_scraper/httpmiddleware.py", line 22, in from_crawler
return cls(crawler.settings)
File "/bp_scraper/bp_scraper/httpmiddleware.py", line 12, in __init__
if parts[1]:
TypeError: '_sre.SRE_Match' object has no attribute '__getitem__'代码:
import re
import random
import base64
from scrapy import log
class RandomProxy(object):
def __init__(self, settings):
self.proxy_list = settings.get('PROXY_LIST')
f = open(self.proxy_list)
self.proxies = {}
for l in f.readlines():
parts = re.match('(\w+://)(\w+:\w+@)?(.+)', l)
if parts[1]:
parts[1] = parts[1][:-1]
self.proxies[parts[0] + parts[2]] = parts[1]
f.close()
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings)提前感谢您的帮助!
发布于 2014-03-11 07:52:01
re.match调用的结果是SRE_Match对象,该对象不支持[]运算符(也称为__getitem__)。我觉得你想
if parts is not None:
if parts.group(1):
<blah>不幸的是,parts.group(1)不是可变的,所以您必须创建另一个变量来保存您想要对其进行的更改。
发布于 2014-03-11 07:51:05
您无法访问匹配的结果,如下所示:
if parts[1]:
parts[1] = parts[1][:-1]相反,这样做,
if parts:
matched = parts.group(1)[:-1]有关正则表达式匹配组here的更多信息
https://stackoverflow.com/questions/22313702
复制相似问题