現實生活,或者工作當中。我們需要一些高質量的ROM網站。那么我們如何使用Python搜尋高質量ROM的網站?比方說,假設你想從網站上下載的所有高品質的超級天堂ROM的。該站點僅有將您帶到文件本身的鏈接列表。由于這是一棵扁平樹,因此可以使用URLala運行基本的wget命令:
wget-m-np-c-w3-R"index.html*"
但是,這將為您提供所有游戲,而不論其質量如何。幸運的是,ROM發燒友使用后綴來表示rom的狀態:
[a]Alternate
[p]Pirate
[b]BadDump(avoidthese,theymaynotwork!)
[t]Trained
[f]Fixed
[T-]OldTranslation
[T+]NewerTranslation
[h]Hack
(-)UnknownYear
[o]Overdump
[!]VerifiedGoodDump
(M#)Multilanguage(#ofLanguages)
(###)Checksum
(??k)ROMSize
ZZZ_Unclassified
(Unl)Unlicensed
因此,我們只想要帶有[!]后綴的代碼。您可能還希望僅針對美國發行版指定[U]。
當然有某種方法可以指定wget帶有正則表達式,但我絕對不是wget或正則表達式專業版,因此在嘗試了幾分鐘后,我放棄了,并編寫了一個簡短的Python腳本來獲得我想要的使用BeautifulSoup的內容。
在編寫任何代碼之前,我分析了目標URL的來源,并且可以肯定的是,該頁面幾乎只是錨標記的列表,并且直接鏈接到ROM文件完善。
偷看之后html,我知道我只需要從所有錨點中提取鏈接,但是只收集包含[!]后綴的鏈接。這可以在不到15行的Python中完成:
首先,安裝beautifulsoup4:
pip3installbeautfilsoup4
然后創建一個名為good_roms.py使用以下代碼:
#good_roms.py
importrequests
frombs4importBeautifulSoup
data=requests.get(weburl)
soup=BeautifulSoup(data.text,features='html.parser')
links=[]
foranchinsoup.find_all('a'):
if'[!]'instr(anch):
links.append(weburl+anch.get('href'))
forlinkinlinks:
print(link)
現在,我可以運行程序并將輸出重定向到文本文件:
python3good_roms.py>rom-list.txt
現在,我有了一個文本文件,其中包含所有好的ROM的URL,我可以將該文件直接提供給wget它將使用-i輸入文件切換:
wget-irom-list.txt
確保您有足夠的空間容納所有rom,并觀看它們一次堆積一堆:
--2019-01-2521:27:02--
Reusingexistingconnectionto[rom-site.blah]:443.
HTTPrequestsent,awaitingresponse...200OK
Length:2097152(2.0M)[application/octet-stream]
Savingto:‘YourFavoriteRom[!].bin’
YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s
2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]
FINISHED--2019-01-2521:29:41--
Totalwallclocktime:38m47s
Downloaded:693files,888Min30m38s(495KB/s)
以上就是關于如何使用Python搜尋高質量ROM的網站的全部內容,想了解更多關于Python的信息,請繼續關注中培偉業。