我试图忽略从我的搜索中列入黑名单的网址。'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”循环只工作一次。当 '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
回答 -
我不得不重新编译 blacklist = c.execute("SELECT name
FROM blacklist
") 每次
我把它放在主'for'循环中,现在一切正常