存储和访问URL

时间:2017-08-10 09:54:23

标签: python web-scraping

我有一个我想用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

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

3 个答案:

答案 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]