找回密码
 立即注册
查看: 689|回复: 0

如何使用Python搜寻高质量ROM的网站?

[复制链接]

尚未签到

发表于 2020-9-3 18:32:17 | 显示全部楼层 |阅读模式
  现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:
% O4 y4 r6 K& m
  1.   wget-m-np-c-w3-R"index.html*"
复制代码
2 _6 m4 V8 |" G
  但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:
* ]$ R% x/ X  X/ ]
  1. <p>  [a]Alternate</p>
    9 N7 C' C! G# P6 e; E
  2. <p>  [p]Pirate</p>, ?& ^, [* H; v. w
  3. <p>  [b]BadDump(avoidthese,theymaynotwork!)</p>1 B, z! d+ b7 s9 J* J/ N; ~
  4. <p>  [t]Trained</p>4 ^& D' [) w) F5 {% C+ V- y5 h- B' O" c
  5. <p>  [f]Fixed</p>* \7 x' ]7 Y& B) t) h* V
  6. <p>  [T-]OldTranslation</p>
    % j! w- t# a. w- B% O
  7. <p>  [T+]NewerTranslation</p>, V2 @9 y/ {0 G4 l2 Q6 n9 S
  8. <p>  [h]Hack</p>: d1 _; m9 x# l: C- U+ S1 B" Q* n
  9. <p>  (-)UnknownYear</p>
    4 R' q  y0 Y/ n9 `% T# y
  10. <p>  [o]Overdump</p>
    ( _+ A2 Z2 c6 o5 s. T" r
  11. <p>  [!]VerifiedGoodDump</p>
    9 x- q3 I; J8 f; `3 x5 c6 z+ D+ K
  12. <p>  (M#)Multilanguage(#ofLanguages)</p>
      z" c) ?/ N1 `
  13. <p>  (###)Checksum</p>
    . e* `/ l7 j* a" D3 v- }
  14. <p>  (??k)ROMSize</p>
    4 Z; z* \! b4 P' t" ?
  15. <p>  ZZZ_Unclassified</p>
      H& b% _' ?$ T  a
  16. <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
  1.   pip3installbeautfilsoup4
复制代码

  Y3 ~# W0 r/ W& ^% J  然后创建一个名为good_roms.py使用以下代码:
; `6 y* v  w" ~: M
  1. <p>  #good_roms.py</p>
    & g1 m) n$ o1 S8 F
  2. <p>  importrequests</p># N. A7 j$ v/ U; M, o8 k2 m9 R9 h
  3. <p>  frombs4importBeautifulSoup</p>
    1 |/ C4 o, X4 ]8 c3 h( R
  4. <p>  data=requests.get(weburl)</p>- W/ u4 n& {' f. n
  5. <p>  soup=BeautifulSoup(data.text,features='html.parser')</p># E% a5 D6 G* Y3 L/ p
  6. <p>  links=[]</p>. f+ r& o, k$ T
  7. <p>  foranchinsoup.find_all('a'):</p>! l9 u, r9 t1 T) d) s
  8. <p>  if'[!]'instr(anch):</p>' k# A, ~" n: e
  9. <p>  links.append(weburl+anch.get('href'))</p>
    : o6 i1 O# w8 j: O# d+ G' ?& A; ]
  10. <p>  forlinkinlinks:</p>
    * B8 c+ A+ C/ x8 E7 Y/ Y3 i
  11. <p>  print(link)</p>
复制代码

" d+ s% [- n( ^8 F  现在,我可以运行程序并将输出重定向到文本文件:( l% Y( y  d+ m, k: J1 S
  1.   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 s
  1.   wget-irom-list.txt
复制代码
7 ]: p! j( y! `3 k6 ?. m6 w
  确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:
0 Y5 g# B0 a# ~5 r+ l
  1. <p>  --2019-01-2521:27:02--</p>4 I1 _# {9 y: \8 G" @
  2. <p>  Reusingexistingconnectionto[rom-site.blah]:443.</p>/ o0 N6 b9 m$ \  k+ \
  3. <p>  HTTPrequestsent,awaitingresponse...200OK</p>
    4 T0 |0 |7 }# K
  4. <p>  Length:2097152(2.0M)[application/octet-stream]</p>
    : I1 R& T' |# y& t
  5. <p>  Savingto:‘YourFavoriteRom[!].bin’</p>9 G8 G6 M% n0 F4 X- ]& D8 U
  6. <p>  YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>1 g  i3 b& ^% Q1 e! q2 d  m& S
  7. <p>  2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
    * ?% r6 h/ L+ U( h8 v) ~
  8. <p>  FINISHED--2019-01-2521:29:41--</p>% I  }2 F* v. ]% }: S
  9. <p>  Totalwallclocktime:38m47s</p>5 X0 I" A; a  F1 b8 L) y
  10. <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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

点击这里给我发消息

QQ|小黑屋|Archiver|手机版|一路学IT论坛 专业视频教程网站

GMT+8, 2026-10-28 08:06

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表