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

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

[复制链接]

尚未签到

发表于 2020-9-3 18:32:17 | 显示全部楼层 |阅读模式
  现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:2 q8 J; K1 C6 Q' D( q: r& ?2 @
  1.   wget-m-np-c-w3-R"index.html*"
复制代码
! g! p5 ]( Z+ @& y5 }9 t
  但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:8 }* Q3 ?" w3 v  d7 B
  1. <p>  [a]Alternate</p>
    & K- w8 h  G. k* C6 w0 s
  2. <p>  [p]Pirate</p>) O, K3 ?7 r; N9 L
  3. <p>  [b]BadDump(avoidthese,theymaynotwork!)</p>3 y: I7 J: `1 U- R9 ^
  4. <p>  [t]Trained</p>
    8 y) d' D0 L# q, O' |
  5. <p>  [f]Fixed</p>0 H7 k& k3 l1 E% A4 {- N* j
  6. <p>  [T-]OldTranslation</p>0 e! I, C% O5 @% Z( U( m, u6 M
  7. <p>  [T+]NewerTranslation</p>
    ; `1 j( x* b3 g" c
  8. <p>  [h]Hack</p>
    9 W1 t' E1 a% C  u' y( Y( o$ \: D
  9. <p>  (-)UnknownYear</p>  ^+ a1 G- N" o
  10. <p>  [o]Overdump</p>
    , I( k, g0 Y  F+ g5 l
  11. <p>  [!]VerifiedGoodDump</p>
    ! H1 R$ ~* A- s" N
  12. <p>  (M#)Multilanguage(#ofLanguages)</p>: R- F/ P1 }2 C. ]
  13. <p>  (###)Checksum</p>
    ! D/ q+ @0 \8 k: E( W
  14. <p>  (??k)ROMSize</p>
    6 e6 U& v% e9 c
  15. <p>  ZZZ_Unclassified</p>
    : b; N: b5 H% b; a3 [
  16. <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
  1.   pip3installbeautfilsoup4
复制代码
* o/ h% s4 g$ z+ {/ x
  然后创建一个名为good_roms.py使用以下代码:7 N# A+ \2 b1 f# h6 g( [
  1. <p>  #good_roms.py</p>$ n& |% _) _* a' g, S" Z# [
  2. <p>  importrequests</p>6 g2 b  J1 h* y+ P8 q9 `
  3. <p>  frombs4importBeautifulSoup</p>4 G& D( r3 [% K- g# y- J8 r% ^/ ^# {* `
  4. <p>  data=requests.get(weburl)</p>
    6 ?+ b5 K0 g7 P5 l( j
  5. <p>  soup=BeautifulSoup(data.text,features='html.parser')</p>: u. |' P) \1 g( i
  6. <p>  links=[]</p>) z! o2 {7 c7 ^6 D1 N% R
  7. <p>  foranchinsoup.find_all('a'):</p>
    : |! k3 u& N9 w: q; Y4 X8 n) H% O; h
  8. <p>  if'[!]'instr(anch):</p>
    : ?0 J1 w+ U, ?
  9. <p>  links.append(weburl+anch.get('href'))</p>
    $ `# N1 ^5 u- Q; I
  10. <p>  forlinkinlinks:</p>4 J" u; n' S8 p: W: i. f& }
  11. <p>  print(link)</p>
复制代码

  W# ], |, ?) o' n9 z: x+ O  现在,我可以运行程序并将输出重定向到文本文件:
1 `3 p7 _% Y. {4 p( ?0 g
  1.   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+ R
  1.   wget-irom-list.txt
复制代码
7 ^8 Z9 D, O7 e4 \. @4 p& B
  确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:; N" K- f: D' b2 b! [! |
  1. <p>  --2019-01-2521:27:02--</p>- A- ?: X$ f. u
  2. <p>  Reusingexistingconnectionto[rom-site.blah]:443.</p>" m" ~: z/ ?  W7 R5 u0 k. {
  3. <p>  HTTPrequestsent,awaitingresponse...200OK</p>- E& w% o# b6 N3 O) t
  4. <p>  Length:2097152(2.0M)[application/octet-stream]</p>
    7 S+ F5 x$ I$ h) W& G
  5. <p>  Savingto:‘YourFavoriteRom[!].bin’</p>" U! f& b* q8 i- B" G. N6 p
  6. <p>  YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>
    $ i) m" v0 }& }/ E& I3 q
  7. <p>  2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
    ' G. J' R5 ^. }) c' M% v- G0 o2 `6 x
  8. <p>  FINISHED--2019-01-2521:29:41--</p>
    " W( t( Q$ ~6 f$ B0 @
  9. <p>  Totalwallclocktime:38m47s</p>
    ) z3 b7 e+ U: u# A; M9 Q
  10. <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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

点击这里给我发消息

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

GMT+8, 2026-10-28 12:45

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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