我有一个我想用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
由于上市没有这样的对象,list.url不起作用。有没有其他方法可以解决这个问题,而不是像这样写一切:
if (wanted_url == 'A')
url_to_be_used = listing.A
此外,如果有更好的方式来存储这些网址,欢迎提出建议。
答案 0 :(得分:2)
您可以使用字典:
urllist = {'A':'url1', 'B':'url2', 'C':'url3'}
如果您想访问A的网址,请执行以下操作:
urllist["A"]
获取所有网址名称的列表
>>> urllist = {'A':'url1', 'B':'url2', 'C':'url3'}
>>> urllist.keys()
['A', 'C', 'B']
获取所有可用网址的列表:
>>> urllist.values()
['url1', 'url3', 'url2']
>>>
添加新网址
urllist["D"] = "url4"
答案 1 :(得分:1)
@ MedAli的解决方案非常好,如果你不想让你的URL持久化。我建议您使用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'}]
答案 2 :(得分: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]