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

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

[复制链接]

尚未签到

发表于 2020-9-3 18:32:17 | 显示全部楼层 |阅读模式
  现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:6 i. d. x& R( [/ Y! _2 [3 T
  1.   wget-m-np-c-w3-R"index.html*"
复制代码

; m8 A2 {2 f% `% j- g" Q  但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:
3 H4 ?6 F; O# d0 t+ f( I1 _
  1. <p>  [a]Alternate</p>2 o% K& v3 p* I9 Y3 F* }
  2. <p>  [p]Pirate</p>0 U8 \  K3 c6 D, V) E0 {# h
  3. <p>  [b]BadDump(avoidthese,theymaynotwork!)</p>- _' e5 B: o! v7 h5 Q
  4. <p>  [t]Trained</p># ]5 B# C# D8 s
  5. <p>  [f]Fixed</p>& {2 P; ?4 q) x' v* y# ^! f+ T, A
  6. <p>  [T-]OldTranslation</p>
    4 n' c3 s; K: K6 {4 }
  7. <p>  [T+]NewerTranslation</p>
    $ }2 d5 `" Z1 w* y+ s8 Z
  8. <p>  [h]Hack</p>' r/ ?* Y0 t+ R2 J8 C2 H. y/ A
  9. <p>  (-)UnknownYear</p>6 i% K2 s8 T; `$ t0 ~, i
  10. <p>  [o]Overdump</p>
    ! o, \# ~9 J) a, L1 j
  11. <p>  [!]VerifiedGoodDump</p>8 |5 ?+ {% v- |# ~+ a# c. S( G% |
  12. <p>  (M#)Multilanguage(#ofLanguages)</p>
    : K& B% F8 O$ U2 F, `" g
  13. <p>  (###)Checksum</p>
    5 u' E$ u( F' _2 v$ r
  14. <p>  (??k)ROMSize</p>) {% i1 A2 T; r) V8 l8 o0 D' L3 N
  15. <p>  ZZZ_Unclassified</p>  e  e0 f, ~; A$ z3 B- H7 M
  16. <p>  (Unl)Unlicensed</p>
复制代码
' D1 H, ^! v: l0 I
  因此,我们只想要带有[!]后缀的代码。您可能还希望仅针对美国发行版指定[U]。
) P+ V# @0 N7 [% q  o4 Y) a0 \  当然有某种方法可以指定wget带有正则表达式,但我绝对不是wget或正则表达式专业版,因此在尝试了几分钟后,我放弃了,并编写了一个简短的Python脚本来获得我想要的使用BeautifulSoup的内容。; c$ R" R0 d# t+ L' A; [' R9 }
  在编写任何代码之前,我分析了目标URL的来源,并且可以肯定的是,该页面几乎只是锚标记的列表,并且直接链接到ROM文件完善。
" n  {3 x* k5 Y) G$ m; e4 n6 J  偷看之后html,我知道我只需要从所有锚点中提取链接,但是只收集包含[!]后缀的链接。这可以在不到15行的Python中完成:
6 s/ p  o  j$ Y! _# K0 g  首先,安装beautifulsoup4:% T' s  ^- R2 Y8 R0 x
  1.   pip3installbeautfilsoup4
复制代码

; q2 J, T2 u& a5 C2 S* S! f- p9 a  然后创建一个名为good_roms.py使用以下代码:
( i0 C7 x  E1 |  A0 H$ q0 a# N
  1. <p>  #good_roms.py</p>
    9 B% [/ _+ B) H6 m0 U
  2. <p>  importrequests</p>
    5 M) @, @  T+ J$ l$ W7 v
  3. <p>  frombs4importBeautifulSoup</p>
    , s+ h$ P, n% \0 B# f( K7 W  X  j
  4. <p>  data=requests.get(weburl)</p>
    " C$ X$ T$ A% t2 p2 |/ n/ T! I
  5. <p>  soup=BeautifulSoup(data.text,features='html.parser')</p>) y4 w$ T: U! q; C
  6. <p>  links=[]</p>
    * }( `8 V% D* D4 U! z
  7. <p>  foranchinsoup.find_all('a'):</p>) U8 O& R- u7 c6 f
  8. <p>  if'[!]'instr(anch):</p>
    & Y& G/ h6 {1 Z: x4 V7 H/ I5 r
  9. <p>  links.append(weburl+anch.get('href'))</p>, E% W; u& P( m* j1 [. k- d' H% M1 c
  10. <p>  forlinkinlinks:</p>
    7 v! J8 U/ o& Q( D) X0 q  ~
  11. <p>  print(link)</p>
复制代码
* p+ T: ]  v" U1 u: [- {' Y
  现在,我可以运行程序并将输出重定向到文本文件:% G; o( o, r8 `& u: m
  1.   python3good_roms.py>rom-list.txt
复制代码
7 d$ g! L' ?* `5 g0 D4 Y
  现在,我有了一个文本文件,其中包含所有好的ROM的URL,我可以将该文件直接提供给wget它将使用-i输入文件切换:" I3 `+ k( G, E$ S7 b- z) f# u
  1.   wget-irom-list.txt
复制代码
, w# y( k5 p7 m
  确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:
$ X4 f: x% L: v6 G% V
  1. <p>  --2019-01-2521:27:02--</p>
    8 C& Z, |$ @  T$ Q! _# f
  2. <p>  Reusingexistingconnectionto[rom-site.blah]:443.</p>& z+ f9 k* Z; p7 J! s6 n
  3. <p>  HTTPrequestsent,awaitingresponse...200OK</p>
    . E( x8 f# Z- C1 \. i: Y
  4. <p>  Length:2097152(2.0M)[application/octet-stream]</p>; v& N% ^% W" l. ~) I
  5. <p>  Savingto:‘YourFavoriteRom[!].bin’</p>
    ! X$ ^% e6 F0 s( Y# S* W( [
  6. <p>  YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>
    ; u- |! l7 M+ p+ @! a! W
  7. <p>  2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>$ h) P' i& i) |; T- g% b# {
  8. <p>  FINISHED--2019-01-2521:29:41--</p>
    $ Q% u* G; ~! m5 E2 T
  9. <p>  Totalwallclocktime:38m47s</p>  O5 Q+ C+ x+ P1 ]% Y
  10. <p>  Downloaded:693files,888Min30m38s(495KB/s)</p>
复制代码

; m$ B& P- w- Q& ?4 U  以上就是关于如何使用Python搜寻高质量ROM的网站的全部内容。  Z$ |. Z8 L, b! H8 ?
9 P6 R5 \& G: C& O6 a' b3 B  P
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

点击这里给我发消息

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

GMT+8, 2026-10-29 04:06

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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