|
|
现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:2 q8 J; K1 C6 Q' D( q: r& ?2 @
- wget-m-np-c-w3-R"index.html*"
复制代码 ! g! p5 ]( Z+ @& y5 }9 t
但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:8 }* Q3 ?" w3 v d7 B
- <p> [a]Alternate</p>
& K- w8 h G. k* C6 w0 s - <p> [p]Pirate</p>) O, K3 ?7 r; N9 L
- <p> [b]BadDump(avoidthese,theymaynotwork!)</p>3 y: I7 J: `1 U- R9 ^
- <p> [t]Trained</p>
8 y) d' D0 L# q, O' | - <p> [f]Fixed</p>0 H7 k& k3 l1 E% A4 {- N* j
- <p> [T-]OldTranslation</p>0 e! I, C% O5 @% Z( U( m, u6 M
- <p> [T+]NewerTranslation</p>
; `1 j( x* b3 g" c - <p> [h]Hack</p>
9 W1 t' E1 a% C u' y( Y( o$ \: D - <p> (-)UnknownYear</p> ^+ a1 G- N" o
- <p> [o]Overdump</p>
, I( k, g0 Y F+ g5 l - <p> [!]VerifiedGoodDump</p>
! H1 R$ ~* A- s" N - <p> (M#)Multilanguage(#ofLanguages)</p>: R- F/ P1 }2 C. ]
- <p> (###)Checksum</p>
! D/ q+ @0 \8 k: E( W - <p> (??k)ROMSize</p>
6 e6 U& v% e9 c - <p> ZZZ_Unclassified</p>
: b; N: b5 H% b; a3 [ - <p> (Unl)Unlicensed</p>
复制代码
6 [$ G" P: o+ L3 d* |! n; V 因此,我们只想要带有[!]后缀的代码。您可能还希望仅针对美国发行版指定[U]。
! C6 J9 b: r, s6 M. d6 ~ 当然有某种方法可以指定wget带有正则表达式,但我绝对不是wget或正则表达式专业版,因此在尝试了几分钟后,我放弃了,并编写了一个简短的Python脚本来获得我想要的使用BeautifulSoup的内容。
. Z5 x1 [4 q- ^1 q9 r 在编写任何代码之前,我分析了目标URL的来源,并且可以肯定的是,该页面几乎只是锚标记的列表,并且直接链接到ROM文件完善。% T' B& h9 o+ c! @% b
偷看之后html,我知道我只需要从所有锚点中提取链接,但是只收集包含[!]后缀的链接。这可以在不到15行的Python中完成:
1 P) v3 Q- ]8 x 首先,安装beautifulsoup4:
+ t- w) y" X: G/ M" q. J8 m* o/ h% s4 g$ z+ {/ x
然后创建一个名为good_roms.py使用以下代码:7 N# A+ \2 b1 f# h6 g( [
- <p> #good_roms.py</p>$ n& |% _) _* a' g, S" Z# [
- <p> importrequests</p>6 g2 b J1 h* y+ P8 q9 `
- <p> frombs4importBeautifulSoup</p>4 G& D( r3 [% K- g# y- J8 r% ^/ ^# {* `
- <p> data=requests.get(weburl)</p>
6 ?+ b5 K0 g7 P5 l( j - <p> soup=BeautifulSoup(data.text,features='html.parser')</p>: u. |' P) \1 g( i
- <p> links=[]</p>) z! o2 {7 c7 ^6 D1 N% R
- <p> foranchinsoup.find_all('a'):</p>
: |! k3 u& N9 w: q; Y4 X8 n) H% O; h - <p> if'[!]'instr(anch):</p>
: ?0 J1 w+ U, ? - <p> links.append(weburl+anch.get('href'))</p>
$ `# N1 ^5 u- Q; I - <p> forlinkinlinks:</p>4 J" u; n' S8 p: W: i. f& }
- <p> print(link)</p>
复制代码
W# ], |, ?) o' n9 z: x+ O 现在,我可以运行程序并将输出重定向到文本文件:
1 `3 p7 _% Y. {4 p( ?0 g- python3good_roms.py>rom-list.txt
复制代码 ! {) }7 ]- R; G" o3 v1 x) u
现在,我有了一个文本文件,其中包含所有好的ROM的URL,我可以将该文件直接提供给wget它将使用-i输入文件切换:
# y0 k7 L/ U* | a8 ^1 u0 d8 P+ R7 ^8 Z9 D, O7 e4 \. @4 p& B
确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:; N" K- f: D' b2 b! [! |
- <p> --2019-01-2521:27:02--</p>- A- ?: X$ f. u
- <p> Reusingexistingconnectionto[rom-site.blah]:443.</p>" m" ~: z/ ? W7 R5 u0 k. {
- <p> HTTPrequestsent,awaitingresponse...200OK</p>- E& w% o# b6 N3 O) t
- <p> Length:2097152(2.0M)[application/octet-stream]</p>
7 S+ F5 x$ I$ h) W& G - <p> Savingto:‘YourFavoriteRom[!].bin’</p>" U! f& b* q8 i- B" G. N6 p
- <p> YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>
$ i) m" v0 }& }/ E& I3 q - <p> 2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
' G. J' R5 ^. }) c' M% v- G0 o2 `6 x - <p> FINISHED--2019-01-2521:29:41--</p>
" W( t( Q$ ~6 f$ B0 @ - <p> Totalwallclocktime:38m47s</p>
) z3 b7 e+ U: u# A; M9 Q - <p> Downloaded:693files,888Min30m38s(495KB/s)</p>
复制代码 4 D# n6 _: e! [" @% M1 w2 k
以上就是关于如何使用Python搜寻高质量ROM的网站的全部内容。) x/ S6 N/ h! H! g7 ^, y
" i- }5 `+ y; w
|
|