我試圖忽略從我的搜索列入黑名單的網址。 'ltp_block'包含包含不同url的數據。for循環第一次後不遍歷 - Python
p = re.compile('href="(.*?)" rel="nofollow"')
url = "http://www.****.**" + p.findall(current)[0]
r = requests.get(url)
上面的代碼是用於獲取從「ltp_block」不同的網址。 r.url在調用時定義循環中的url。
for each_row in blacklist:
if(re.findall('\\b'+each_row[0]+'\\b', r.url, flags=re.IGNORECASE) != []):
print "found"
問題 - 上面的 'for' 循環的工作一次。當'check'變成1或者主循環選擇另一個url時,這個'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
答案 -
我不得不重新編譯黑名單= c.execute( 「SELECT name
FROM blacklist
」)每次
我把它放在主 'for' 循環和一切工作現在
你究竟是什麼意思的「不正當行爲」?它沒有運行嗎?它會拋出一個錯誤嗎?您是否嘗試過最簡單的調試技術:打印中間值以查看它們是否符合您的期望? –
它被跳過,因爲它不存在。編輯 – Nuv
請注意,在Python中循環計數是糟糕的風格,請使用「enumerate()」代替。 –