検索からブラックリストに登録されている URL を無視しようとしています。「ltp_block」には、異なる URL を含むデータが含まれています。
p = re.compile('href="(.*?)" rel="nofollow"')
url = "http://www.****.**" + p.findall(current)[0]
r = requests.get(url)
上記のコードは、「ltp_block」からさまざまな URL を取得するために使用されます。r.url は、呼び出されたときにループ内の URL を定義します。
for each_row in blacklist:
if(re.findall('\\b'+each_row[0]+'\\b', r.url, flags=re.IGNORECASE) != []):
print "found"
質問- 上記の「for」ループは 1 回しか機能しません。「check」が 1 になるか、メイン ループが別の URL を選択すると、この 2 番目の「for」ループは存在しないかのように単純にスキップされます。なんで ?
conn = sqlite3.connect('test.db')
c = conn.cursor()
blacklist = c.execute("SELECT `name` FROM `blacklist`")
check = 0
for row in ltp_block:
p = re.compile('versan')
current = ltp_block[check]
if(p.findall(current) != []):
p = re.compile('price=(.*?)&')
ltp = p.findall(current)[0]
del p
else:
p = re.compile('Gesa: (.*?) &')
ltp = p.findall(current)[0]
del p
p = re.compile('href="(.*?)" rel="nofollow"')
url = "http://www.****.**" + p.findall(current)[0]
r = requests.get(url)
for each_row in blacklist:
if(re.findall('\\b'+each_row[0]+'\\b', r.url, flags=re.IGNORECASE) != []):
print "found"
check = check + 1
答え -
毎回 blacklist = c.execute("SELECT name
FROM blacklist
") を再コンパイルする必要がありました
メインの「for」ループに配置しましたが、すべてが機能しています