2017-08-10 72 views
0

我有一列我想用python访问的URL。哪些是存储这些的最佳方式?有〜40个URL和列表是相当恒定的,但我希望能够更新的完整列表(我有一个刮刀检查来自某网站的网址目前URL存储这样的:存储和访问URL

class urlList(object):  
A = 'url1' 
B = 'url2' 
C = 'url3' 

访问这些都是很简单的,当你知道这个名字“A”,但我有此脚本检查

wanted_urls = ['A','C'] 
def urlScrapper(wanted_urls): 
listing = urlList 
temp = [attr for attr in dir(listing) if not callable(getattr(listing, attr)) and not attr.startswith("__")] 
for (wanted_url in wanted_urls): 
    for (url in temp): 
    if (url == wanted_url): 
    url_to_be_used = listing.url 

listing.url自上市以来不起作用没有这样的对象。是否有任何其他方式应付这个比写所有这样开放:

if (wanted_url == 'A') 
url_to_be_used = listing.A 

此外,如果有更好的方式来存储这些网址,欢迎提出建议。

回答

2

您可以使用字典是:

urllist = {'A':'url1', 'B':'url2', 'C':'url3'} 

,如果你想访问某网址,你这样做:

urllist["A"] 

要获得所有URL名称的列表

>>> urllist = {'A':'url1', 'B':'url2', 'C':'url3'} 
>>> urllist.keys() 
['A', 'C', 'B'] 

要获取所有可用网址的列表:

>>> urllist.values() 
['url1', 'url3', 'url2'] 
>>> 

要添加新的URL,

urllist["D"] = "url4" 
1

@ MedAli的解决方案是非常好的,如果你不想让你的网址,持久的。我建议你使用TinyDB解决方案来保持你的URL的组织和持久性。

首先,用PIP安装TinyDB。

然后;

from tinydb import TinyDB, Query 

url_db = TinyDB('/path/to/URLs.json') 
URL = Query() 


url_db.insert({'URLName': 'Foo', 'Address': 'http://foo.bar'}) 
url_db.search(URL.URLName == 'Foo') 

输出:

[{u'URLName': u'Foo', u'Address': u'http://foo.bar'}] 
+0

似乎是一个不错的分贝。目前还不能安装模块,因此我现在将使用@MedAli的解决方案。 – Pekafu

0

使用字典作为MedAli建议似乎是一个很好的解决方案:

urllist = {'A':'url1', 'B':'url2', 'C':'url3'} 
temp = urllist.items() 

for (wanted_url in wanted_urls): 
for (url in temp): 
    if (url[0] == wanted_url): 
    url_to_be_used = listing.url[1]