我嘗試使用python和數據庫來顯示一系列信息。但是,我的輸出僅顯示最後一列。 我知道我不是很清楚地表達我的意思。 於是,我把我的代碼和輸出如下: 現在的輸出顯示:Python:如何將一系列數據插入到數據庫中並將它們全部顯示出來
$ python pricewatch.py
Harvey Norman Site Search
iPad 2 Wi-Fi 16GB Black
iPad 2 Wi-Fi 16GB
iPad mini Wi-Fi + Cellular 32GB
iPad mini Wi-Fi 16GB
iPad mini Wi-Fi + Cellular 64GB
iPad Wi-Fi 64GB with Retina Display
iPad Wi-Fi 32GB with Retina Display
iPad 2 Wi-Fi 16GB White
iPad 2 Wi-Fi + 3G 16GB
iPad Wi-Fi + Cellular 32GB with Retina Display
iPad mini Wi-Fi + Cellular 16GB
$357
$697
$756
$647
$395
$545
$777
$487
(8, u'iPad mini Wi-Fi + Cellular 16GB', u'Harvey Norman Site Search', u'$487')
//你可以看到,它只是顯示最後一個 我的代碼是
url="http://m.harveynorman.com.au/computers/tablets-readers/ipads"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
sitename=soup.find('label',{'for':'search'})
print sitename.renderContents()
productname=soup.findAll('strong',{'class':'name fn'})
for eachproductname in productname:
print eachproductname.renderContents()
productprice=soup.findAll('span',{'class':'price'})
for eachproductprice in productprice:
print eachproductprice.renderContents().replace("<span>","").replace("</span>","")
conn =sqlite3.connect('pricewatch.db')
c = conn.cursor()
c.execute("CREATE TABLE if not exists table1 (id integer, name text, store text, price real)")
eachname = eachproductname.renderContents()
eachprice = eachproductprice.renderContents().replace("<span>","").replace("</span>","")
sitename = sitename.renderContents()
assignnumber = randint(1,30) #issue here,want to assign a series of number by the scriptself
data = [(assignnumber,eachname,sitename,eachprice),
]
c.executemany('INSERT INTO table1 VALUES (?,?,?,?)',data)
#output
for row in c.execute('select * from table1'):
print row
現在我從數據庫所需的輸出類似 (1,ipadXX,HN,$ 199頁) (2,iPad的XX,NH,200 $) .....
希望任何人都可以給予提示或編輯我的小號CRIPT。
問候 餘杭
@PailWoolcock感謝,我用ftechall之前,沒有奏效。 –