|
|
现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:. `4 _. v9 j3 ^$ T9 j
- wget-m-np-c-w3-R"index.html*"
复制代码 2 s. u7 s( w; y* a9 ]9 W
但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:
0 @" E+ Z0 ]5 i- a, O- <p> [a]Alternate</p>( m5 b6 {* b) c& @% j7 B6 y
- <p> [p]Pirate</p>
% o: S- f" ~9 Z: s# w - <p> [b]BadDump(avoidthese,theymaynotwork!)</p>6 G0 `8 F/ |9 t- O8 D r6 |% o
- <p> [t]Trained</p>
( \: i: x z- F" l1 \2 p1 B% ` - <p> [f]Fixed</p>+ G7 ~ G% u& m" P- j0 k" E
- <p> [T-]OldTranslation</p>9 P6 v' H8 Z$ K# K) R7 U
- <p> [T+]NewerTranslation</p>
v3 k+ q: u! ^5 @( h" E/ O - <p> [h]Hack</p>
1 Q& N7 j0 j! [# X H - <p> (-)UnknownYear</p>1 \! b9 ]3 n1 F, W3 d
- <p> [o]Overdump</p>
: O9 x: x n R) i: l" o - <p> [!]VerifiedGoodDump</p>
! L( E( p% Q1 }' e- l4 `# E - <p> (M#)Multilanguage(#ofLanguages)</p>; s4 W' ^1 Y C5 T2 {5 o
- <p> (###)Checksum</p>" R" ?7 k$ n& b
- <p> (??k)ROMSize</p> h, K1 o( ]3 m; w1 u8 @7 C& e
- <p> ZZZ_Unclassified</p> n9 F; w3 P3 N( z- q
- <p> (Unl)Unlicensed</p>
复制代码 " F$ T2 b* T: R y( w% b" c
因此,我们只想要带有[!]后缀的代码。您可能还希望仅针对美国发行版指定[U]。* h: r% Z8 s3 y% ^- v* y" o
当然有某种方法可以指定wget带有正则表达式,但我绝对不是wget或正则表达式专业版,因此在尝试了几分钟后,我放弃了,并编写了一个简短的Python脚本来获得我想要的使用BeautifulSoup的内容。. l# t& R7 x* O6 G1 L: I! W
在编写任何代码之前,我分析了目标URL的来源,并且可以肯定的是,该页面几乎只是锚标记的列表,并且直接链接到ROM文件完善。
1 c" k8 S6 g: `4 V0 ] 偷看之后html,我知道我只需要从所有锚点中提取链接,但是只收集包含[!]后缀的链接。这可以在不到15行的Python中完成:
; w1 z ]8 Y1 _; C 首先,安装beautifulsoup4:
0 }5 _ d6 M* ~% Y# x6 b& D
8 ]- k u! W6 w 然后创建一个名为good_roms.py使用以下代码:& v* X4 ?) A% C6 L) v' r
- <p> #good_roms.py</p>
2 y( `( i+ N, M' e. ~8 Y - <p> importrequests</p>
( k5 \1 K% G4 J* e - <p> frombs4importBeautifulSoup</p>
8 E6 ^8 k- O! A' ]# Q8 ~, z' U4 } - <p> data=requests.get(weburl)</p>/ S8 S/ d3 b8 z- g2 w; o8 t
- <p> soup=BeautifulSoup(data.text,features='html.parser')</p>
' |- ?) _' [0 R z - <p> links=[]</p>
; k$ `5 w7 w5 u) L. u: W7 A - <p> foranchinsoup.find_all('a'):</p>
4 V* x3 L# c R2 ~ - <p> if'[!]'instr(anch):</p>
! ~6 S7 _+ I/ t - <p> links.append(weburl+anch.get('href'))</p>1 w$ B& l, ?7 ?+ @$ M$ g1 V
- <p> forlinkinlinks:</p>
& d8 h: H$ t# Y* F( h - <p> print(link)</p>
复制代码
5 o$ s5 ^* U9 K2 x$ M; r 现在,我可以运行程序并将输出重定向到文本文件:
; l3 \: S% ]/ @, T- python3good_roms.py>rom-list.txt
复制代码 # {9 V; l9 C- w- ^# b+ ]
现在,我有了一个文本文件,其中包含所有好的ROM的URL,我可以将该文件直接提供给wget它将使用-i输入文件切换:
# H, ], K+ c. j% F9 t% Z& Y/ U- o2 u' h: [
确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:6 Q4 v9 @% {- H ~. U7 a/ C- T" j$ B
- <p> --2019-01-2521:27:02--</p>
* O, c3 X9 A4 d" j# R+ C3 L! x - <p> Reusingexistingconnectionto[rom-site.blah]:443.</p>/ W+ U# M* l+ f- q4 H1 T* x/ z F' |
- <p> HTTPrequestsent,awaitingresponse...200OK</p>
1 @7 r) Y. z1 g I% _' k - <p> Length:2097152(2.0M)[application/octet-stream]</p>
4 L7 v- t8 Y! S+ k; \7 h3 a+ i - <p> Savingto:‘YourFavoriteRom[!].bin’</p>' J' J# A2 v; S5 Y, \7 g8 d5 [
- <p> YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>% P# k+ C9 v O
- <p> 2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
7 ]$ V6 b# q0 L$ w - <p> FINISHED--2019-01-2521:29:41--</p>3 D4 t2 u: K, U
- <p> Totalwallclocktime:38m47s</p>
% r0 d0 Y- M# S8 R; V - <p> Downloaded:693files,888Min30m38s(495KB/s)</p>
复制代码 t I" D% O8 ]) U
以上就是关于如何使用Python搜寻高质量ROM的网站的全部内容。
! [: \7 k5 g! r( ?# p; M' F5 ^" \2 y8 N, D" W. s
|
|