現在このエラーが発生していますが、どういう意味かわかりません。そのかすれた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)
よろしくお願いします!
_re.match
_呼び出しの結果は、_SRE_Match
_オブジェクトであり、_[]
_演算子(別名___getitem__
_)をサポートしていません。私はあなたが欲しいと思います
_if parts is not None:
if parts.group(1):
<blah>
_
残念ながら、parts.group(1)
は変更できないため、変更を保持するために別の変数を作成する必要があります。
次のように一致した結果にアクセスすることはできません。
if parts[1]:
parts[1] = parts[1][:-1]
代わりに、これを行います
if parts:
matched = parts.group(1)[:-1]
正規表現一致グループの詳細 ここ