我想如下寫一個函數:是否有可能獲得所有可能的網址?
def get_urls(*urls,restrictions=None):
#here there should be some code that
#iterates through the urls and create
#a dictionary where the keys are the
#respective urls and their values are
#a list of the possible extentions. The
#function should return that dictionary.
先說明一下。如果我有一個網站:www.example.com,並且它只有以下網頁:www.example.com/faq,www.example.com/history和www.example.com/page/2。這將是應用程序:
In[1]: site = 'http://example.com'
In[2]: get_urls(site)
Out[2]: {'http://example.com':['/faq','/history','/page/2']}
我花了幾個小時的研究,到目前爲止,這似乎是不可能的!所以我錯過了一些可以做到這一點的模塊?有沒有存在,但不是在python中?如果是這樣,什麼語言?
現在你可能想知道爲什麼會出現restrictions=None
,那麼這裏就是爲什麼:
我希望能夠限制添加到什麼是可以接受的URL。例如restrictions='first'
可能會使它只能與一個'/'
一起存在的頁面。這裏有一個例子:
In[3]: get_urls(site,restrictions='first')
Out[3]: {'http://example.com':['/faq','/history']}
我不需要保留解釋限制的想法,但你瞭解它的需求!有些網站,尤其是社交網站,對於任何圖片都有一些瘋狂的附加內容,在保留原始網頁包含所有照片的同時,除掉這些內容非常重要。
所以是的,我完全沒有代碼,但這是因爲我不知道該怎麼做!但我想我已經明確了我需要做的事情,所以,是可能的嗎?如果是,如何?如果不是,爲什麼不呢?
編輯:
所以一些答案和意見後,這裏更是一些信息。我想給一個url,不一定是一個域,然後返回一個字典,其中原始URL作爲關鍵字,並將該url的所有擴展名作爲項目列表。這裏是我以前'example.com'
一個例子:
In[4]: site = 'http://example.com/page'
In[5]: get_urls(site)
Out[5]: {'http://example.com/page':['/2']}
抓取實例和美麗的湯是偉大的,但如果有一些網址並非直接在任一頁面的鏈接,那麼我無法找到它。是的,這通常不是一個問題,但我希望能夠!
除非網站有一個易於解析的網站地圖,否則您可能需要抓取它。 – GWW
「所有可能」有多廣?該頁面上的所有鏈接?整個網站的所有鏈接?你試過什麼了? – Blender
@Blender:我沒有嘗試過任何東西,因爲我無法找到這個庫。看到我不知道如何獲得給定網站上的所有網址,我想知道哪個模塊能夠做到。所有可能的都是,但是會有一個「限制」部分的功能,所以它只能做一些。 –