現(xiàn)實生活,或者工作當中。我們需要一些高質(zhì)量的ROM網(wǎng)站。那么我們?nèi)绾问褂肞ython搜尋高質(zhì)量ROM的網(wǎng)站?比方說,假設(shè)你想從網(wǎng)站上下載的所有高品質(zhì)的超級天堂ROM的。該站點僅有將您帶到文件本身的鏈接列表。由于這是一棵扁平樹,因此可以使用URLala運行基本的wget命令:
wget-m-np-c-w3-R"index.html*"
但是,這將為您提供所有游戲,而不論其質(zhì)量如何。幸運的是,ROM發(fā)燒友使用后綴來表示rom的狀態(tài):
[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
因此,我們只想要帶有[!]后綴的代碼。您可能還希望僅針對美國發(fā)行版指定[U]。
當然有某種方法可以指定wget帶有正則表達式,但我絕對不是wget或正則表達式專業(yè)版,因此在嘗試了幾分鐘后,我放棄了,并編寫了一個簡短的Python腳本來獲得我想要的使用BeautifulSoup的內(nèi)容。
在編寫任何代碼之前,我分析了目標URL的來源,并且可以肯定的是,該頁面幾乎只是錨標記的列表,并且直接鏈接到ROM文件完善。
偷看之后html,我知道我只需要從所有錨點中提取鏈接,但是只收集包含[!]后綴的鏈接。這可以在不到15行的Python中完成:
首先,安裝beautifulsoup4:
pip3installbeautfilsoup4
然后創(chuàng)建一個名為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)
現(xiàn)在,我可以運行程序并將輸出重定向到文本文件:
python3good_roms.py>rom-list.txt
現(xiàn)在,我有了一個文本文件,其中包含所有好的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)
以上就是關(guān)于如何使用Python搜尋高質(zhì)量ROM的網(wǎng)站的全部內(nèi)容,想了解更多關(guān)于Python的信息,請繼續(xù)關(guān)注中培偉業(yè)。