2017-02-25 25 views
0

我一直在使用下面的代码从Chrome历史的副本,试图提取URL,我一直在PyCharm写这个:Python的URL拔牙

import sqlite3 
import os 

PATH='C:\\Users\\%s\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\History - Copy' % os.environ.get('USERNAME') 

HistCop = sqlite3.connect(PATH) 

c = HistCop.cursor() 

ccp = c.execute('SELECT url FROM urls ORDER BY "id" DESC LIMIT 5') 

ccpp=ccp.fetchall() 

print ccpp 

我的主要目标是开这在浏览器中至少有一个网址,但是当我使用代码时:

import webbrowser 

url = ccpp[4] 

webbrowser.open(url) 

我最终出现错误。我认为这是行不通的,因为...

(u'https://stackoverflow.com/search',) 

在它前面有一个“u”。

请让我知道为什么会发生这种情况,如果有办法摆脱它,或者有更好的方法来实现我的目标。

+0

欢迎来到StackOverflow。如果您希望我们为您提供帮助,则应在您的问题中包含原始的完整错误消息以及重现问题所需的所有代码。例如,你是如何获得'(u'https://stackoverflow.com/search',)'?它是'ccpp [4]'?不要让我们猜测! –

回答

0

它不起作用,因为您将元组传递给需要字符串的函数。 cursor.fetchall()返回元组(与ñ元素被表示为ñ元组,因为一排)的列表,所以你只需要得到包含在元组中的单个元素:

rows = cursor.fetchall() 
url = rows[4][0] 
0

源码的fetchall方法返回一个列表,其中包含查询结果中每行的一个项目。这些项目都是一个元组(类似于列表),其中包含该行的字段数据。所以:

ccpp # this is a list 
ccpp[4] # this is a tuple 

您可以告诉它是一个元组,因为您打印的输出显示该元组。如果你想从第一列,'url'列的数据,你需要索引它(类似于你将如何列表):

ccpp[4][0] # get the first column of the fifth row