而不是循环我的列表,执行在第一个项目后停止

时间:2017-04-30 20:43:20

标签: python sqlite

我不确定为什么不是循环遍历名为link的整个列表,而是我的代码在第一个项目

之后停止
import requests
from bs4 import BeautifulSoup
import sqlite3
import datetime

today = datetime.date.today()

with sqlite3.connect("911.db",timeout=10) as connection:
c = connection.cursor()
c.execute("SELECT url FROM Links")


for link in c:
    print link
    page = requests.get(link[0])
    soup = BeautifulSoup(page.content, 'html.parser')
    status = soup.find_all('div', class_='flashmessage warning')
    if not status:
        print "for sale"
        update_row = link[0]
        c.execute("UPDATE Links SET last_seen = (?) WHERE url == (?)", (today, update_row) )
    else:
        print "sold"
        update_row = link[0]
        print update_row
        c.execute("UPDATE Links SET status = 1 WHERE url == (?)", (update_row,) )

当我删除下面的这一部分时,我可以在循环中打印整个列表

if not status:
    print "for sale"
    update_row = link[0]
    c.execute("UPDATE Links SET last_seen = (?) WHERE url == (?)", (today, update_row) )
else:
    print "sold"
    update_row = link[0]
    print update_row
    c.execute("UPDATE Links SET status = 1 WHERE url == (?)", (update_row,) )

我不明白为什么只要“if not”或“else”语句匹配我的循环停止的值。

这肯定是一个非常愚蠢的错误,但我真的找不到它

1 个答案:

答案 0 :(得分:1)

你试图循环c中的内容;在循环内部,您更改了c,因此您无法再循环它。