|
|
现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:
% O4 y4 r6 K& m- wget-m-np-c-w3-R"index.html*"
复制代码 2 _6 m4 V8 |" G
但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:
* ]$ R% x/ X X/ ]- <p> [a]Alternate</p>
9 N7 C' C! G# P6 e; E - <p> [p]Pirate</p>, ?& ^, [* H; v. w
- <p> [b]BadDump(avoidthese,theymaynotwork!)</p>1 B, z! d+ b7 s9 J* J/ N; ~
- <p> [t]Trained</p>4 ^& D' [) w) F5 {% C+ V- y5 h- B' O" c
- <p> [f]Fixed</p>* \7 x' ]7 Y& B) t) h* V
- <p> [T-]OldTranslation</p>
% j! w- t# a. w- B% O - <p> [T+]NewerTranslation</p>, V2 @9 y/ {0 G4 l2 Q6 n9 S
- <p> [h]Hack</p>: d1 _; m9 x# l: C- U+ S1 B" Q* n
- <p> (-)UnknownYear</p>
4 R' q y0 Y/ n9 `% T# y - <p> [o]Overdump</p>
( _+ A2 Z2 c6 o5 s. T" r - <p> [!]VerifiedGoodDump</p>
9 x- q3 I; J8 f; `3 x5 c6 z+ D+ K - <p> (M#)Multilanguage(#ofLanguages)</p>
z" c) ?/ N1 ` - <p> (###)Checksum</p>
. e* `/ l7 j* a" D3 v- } - <p> (??k)ROMSize</p>
4 Z; z* \! b4 P' t" ? - <p> ZZZ_Unclassified</p>
H& b% _' ?$ T a - <p> (Unl)Unlicensed</p>
复制代码
0 x9 C4 S: J' a, [0 @6 @; D, \3 x 因此,我们只想要带有[!]后缀的代码。您可能还希望仅针对美国发行版指定[U]。4 i, ?5 R9 ]8 h; {2 K* X, t7 J4 g
当然有某种方法可以指定wget带有正则表达式,但我绝对不是wget或正则表达式专业版,因此在尝试了几分钟后,我放弃了,并编写了一个简短的Python脚本来获得我想要的使用BeautifulSoup的内容。- _6 Z% a0 i, G1 X
在编写任何代码之前,我分析了目标URL的来源,并且可以肯定的是,该页面几乎只是锚标记的列表,并且直接链接到ROM文件完善。+ X1 V( }( @* h% w
偷看之后html,我知道我只需要从所有锚点中提取链接,但是只收集包含[!]后缀的链接。这可以在不到15行的Python中完成:1 K: V1 Q0 F1 |& S7 Q
首先,安装beautifulsoup4:
* ]0 y0 V6 q0 |! [. w
Y3 ~# W0 r/ W& ^% J 然后创建一个名为good_roms.py使用以下代码:
; `6 y* v w" ~: M- <p> #good_roms.py</p>
& g1 m) n$ o1 S8 F - <p> importrequests</p># N. A7 j$ v/ U; M, o8 k2 m9 R9 h
- <p> frombs4importBeautifulSoup</p>
1 |/ C4 o, X4 ]8 c3 h( R - <p> data=requests.get(weburl)</p>- W/ u4 n& {' f. n
- <p> soup=BeautifulSoup(data.text,features='html.parser')</p># E% a5 D6 G* Y3 L/ p
- <p> links=[]</p>. f+ r& o, k$ T
- <p> foranchinsoup.find_all('a'):</p>! l9 u, r9 t1 T) d) s
- <p> if'[!]'instr(anch):</p>' k# A, ~" n: e
- <p> links.append(weburl+anch.get('href'))</p>
: o6 i1 O# w8 j: O# d+ G' ?& A; ] - <p> forlinkinlinks:</p>
* B8 c+ A+ C/ x8 E7 Y/ Y3 i - <p> print(link)</p>
复制代码
" d+ s% [- n( ^8 F 现在,我可以运行程序并将输出重定向到文本文件:( l% Y( y d+ m, k: J1 S
- python3good_roms.py>rom-list.txt
复制代码 ) T! I& }4 b: c1 p! E3 G T
现在,我有了一个文本文件,其中包含所有好的ROM的URL,我可以将该文件直接提供给wget它将使用-i输入文件切换:
7 F" e- a( E* h( f8 [" N5 C, \ N5 s7 ]: p! j( y! `3 k6 ?. m6 w
确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:
0 Y5 g# B0 a# ~5 r+ l- <p> --2019-01-2521:27:02--</p>4 I1 _# {9 y: \8 G" @
- <p> Reusingexistingconnectionto[rom-site.blah]:443.</p>/ o0 N6 b9 m$ \ k+ \
- <p> HTTPrequestsent,awaitingresponse...200OK</p>
4 T0 |0 |7 }# K - <p> Length:2097152(2.0M)[application/octet-stream]</p>
: I1 R& T' |# y& t - <p> Savingto:‘YourFavoriteRom[!].bin’</p>9 G8 G6 M% n0 F4 X- ]& D8 U
- <p> YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>1 g i3 b& ^% Q1 e! q2 d m& S
- <p> 2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
* ?% r6 h/ L+ U( h8 v) ~ - <p> FINISHED--2019-01-2521:29:41--</p>% I }2 F* v. ]% }: S
- <p> Totalwallclocktime:38m47s</p>5 X0 I" A; a F1 b8 L) y
- <p> Downloaded:693files,888Min30m38s(495KB/s)</p>
复制代码 * D3 Y& t: A, l& D9 B/ m
以上就是关于如何使用Python搜寻高质量ROM的网站的全部内容。8 D. G( m$ E8 S! r5 [) L
3 |- L% |/ K! z
|
|