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

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

[复制链接]

尚未签到

发表于 2020-9-3 18:32:17 | 显示全部楼层 |阅读模式
  现实生活,或者工作当中。我们需要一些高质量的ROM网站。那么我们如何使用Python搜寻高质量ROM的网站?比方说,假设你想从网站上下载的所有高品质的超级天堂ROM的。该站点仅有将您带到文件本身的链接列表。由于这是一棵扁平树,因此可以使用URLala运行基本的wget命令:. `4 _. v9 j3 ^$ T9 j
  1.   wget-m-np-c-w3-R"index.html*"
复制代码
2 s. u7 s( w; y* a9 ]9 W
  但是,这将为您提供所有游戏,而不论其质量如何。幸运的是,ROM发烧友使用后缀来表示rom的状态:
0 @" E+ Z0 ]5 i- a, O
  1. <p>  [a]Alternate</p>( m5 b6 {* b) c& @% j7 B6 y
  2. <p>  [p]Pirate</p>
    % o: S- f" ~9 Z: s# w
  3. <p>  [b]BadDump(avoidthese,theymaynotwork!)</p>6 G0 `8 F/ |9 t- O8 D  r6 |% o
  4. <p>  [t]Trained</p>
    ( \: i: x  z- F" l1 \2 p1 B% `
  5. <p>  [f]Fixed</p>+ G7 ~  G% u& m" P- j0 k" E
  6. <p>  [T-]OldTranslation</p>9 P6 v' H8 Z$ K# K) R7 U
  7. <p>  [T+]NewerTranslation</p>
      v3 k+ q: u! ^5 @( h" E/ O
  8. <p>  [h]Hack</p>
    1 Q& N7 j0 j! [# X  H
  9. <p>  (-)UnknownYear</p>1 \! b9 ]3 n1 F, W3 d
  10. <p>  [o]Overdump</p>
    : O9 x: x  n  R) i: l" o
  11. <p>  [!]VerifiedGoodDump</p>
    ! L( E( p% Q1 }' e- l4 `# E
  12. <p>  (M#)Multilanguage(#ofLanguages)</p>; s4 W' ^1 Y  C5 T2 {5 o
  13. <p>  (###)Checksum</p>" R" ?7 k$ n& b
  14. <p>  (??k)ROMSize</p>  h, K1 o( ]3 m; w1 u8 @7 C& e
  15. <p>  ZZZ_Unclassified</p>  n9 F; w3 P3 N( z- q
  16. <p>  (Unl)Unlicensed</p>
复制代码
" F$ T2 b* T: R  y( w% b" c
  因此,我们只想要带有[!]后缀的代码。您可能还希望仅针对美国发行版指定[U]。* h: r% Z8 s3 y% ^- v* y" o
  当然有某种方法可以指定wget带有正则表达式,但我绝对不是wget或正则表达式专业版,因此在尝试了几分钟后,我放弃了,并编写了一个简短的Python脚本来获得我想要的使用BeautifulSoup的内容。. l# t& R7 x* O6 G1 L: I! W
  在编写任何代码之前,我分析了目标URL的来源,并且可以肯定的是,该页面几乎只是锚标记的列表,并且直接链接到ROM文件完善。
1 c" k8 S6 g: `4 V0 ]  偷看之后html,我知道我只需要从所有锚点中提取链接,但是只收集包含[!]后缀的链接。这可以在不到15行的Python中完成:
; w1 z  ]8 Y1 _; C  首先,安装beautifulsoup4:
0 }5 _  d6 M* ~% Y# x6 b& D
  1.   pip3installbeautfilsoup4
复制代码

8 ]- k  u! W6 w  然后创建一个名为good_roms.py使用以下代码:& v* X4 ?) A% C6 L) v' r
  1. <p>  #good_roms.py</p>
    2 y( `( i+ N, M' e. ~8 Y
  2. <p>  importrequests</p>
    ( k5 \1 K% G4 J* e
  3. <p>  frombs4importBeautifulSoup</p>
    8 E6 ^8 k- O! A' ]# Q8 ~, z' U4 }
  4. <p>  data=requests.get(weburl)</p>/ S8 S/ d3 b8 z- g2 w; o8 t
  5. <p>  soup=BeautifulSoup(data.text,features='html.parser')</p>
    ' |- ?) _' [0 R  z
  6. <p>  links=[]</p>
    ; k$ `5 w7 w5 u) L. u: W7 A
  7. <p>  foranchinsoup.find_all('a'):</p>
    4 V* x3 L# c  R2 ~
  8. <p>  if'[!]'instr(anch):</p>
    ! ~6 S7 _+ I/ t
  9. <p>  links.append(weburl+anch.get('href'))</p>1 w$ B& l, ?7 ?+ @$ M$ g1 V
  10. <p>  forlinkinlinks:</p>
    & d8 h: H$ t# Y* F( h
  11. <p>  print(link)</p>
复制代码

5 o$ s5 ^* U9 K2 x$ M; r  现在,我可以运行程序并将输出重定向到文本文件:
; l3 \: S% ]/ @, T
  1.   python3good_roms.py>rom-list.txt
复制代码
# {9 V; l9 C- w- ^# b+ ]
  现在,我有了一个文本文件,其中包含所有好的ROM的URL,我可以将该文件直接提供给wget它将使用-i输入文件切换:
# H, ], K+ c. j% F
  1.   wget-irom-list.txt
复制代码
9 t% Z& Y/ U- o2 u' h: [
  确保您有足够的空间容纳所有rom,并观看它们一次堆积一堆:6 Q4 v9 @% {- H  ~. U7 a/ C- T" j$ B
  1. <p>  --2019-01-2521:27:02--</p>
    * O, c3 X9 A4 d" j# R+ C3 L! x
  2. <p>  Reusingexistingconnectionto[rom-site.blah]:443.</p>/ W+ U# M* l+ f- q4 H1 T* x/ z  F' |
  3. <p>  HTTPrequestsent,awaitingresponse...200OK</p>
    1 @7 r) Y. z1 g  I% _' k
  4. <p>  Length:2097152(2.0M)[application/octet-stream]</p>
    4 L7 v- t8 Y! S+ k; \7 h3 a+ i
  5. <p>  Savingto:‘YourFavoriteRom[!].bin’</p>' J' J# A2 v; S5 Y, \7 g8 d5 [
  6. <p>  YourFavoriteRom[!].bin100%[========================>]2.00M513KB/sin3.9s</p>% P# k+ C9 v  O
  7. <p>  2019-01-2521:27:09(513KB/s)-‘YourFavoriteRom[!].bin’saved[2097152/2097152]</p>
    7 ]$ V6 b# q0 L$ w
  8. <p>  FINISHED--2019-01-2521:29:41--</p>3 D4 t2 u: K, U
  9. <p>  Totalwallclocktime:38m47s</p>
    % r0 d0 Y- M# S8 R; V
  10. <p>  Downloaded:693files,888Min30m38s(495KB/s)</p>
复制代码
  t  I" D% O8 ]) U
  以上就是关于如何使用Python搜寻高质量ROM的网站的全部内容。
! [: \7 k5 g! r( ?# p; M' F5 ^" \2 y8 N, D" W. s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

点击这里给我发消息

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

GMT+8, 2026-9-1 04:09

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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