找回密码
 立即注册

一键登录:

QQ登录

只需一步,快速开始

查看: 9054|回复: 19

[资料整理] 使用网络爬虫汇总整理海贼王资讯的初尝试

[复制链接]
  • TA的每日心情
    开心
    2022-9-24 22:55
  • 签到天数: 837 天

    [LV.10]以坛为家III

    6

    主题

    741

    回帖

    2362

    积分

    超新星

    积分
    2362
    发表于 2020-8-29 17:49 | 显示全部楼层 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转最有爱的海贼王论坛。

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    本帖最后由 高石乐 于 2020-8-29 17:49 编辑

    ****TalkOP海道-海贼王论坛-海贼王资源区****
    地址:http://bbs.talkop.com/
    作者ID:高石乐
    首发日期:2020.8.29
    *********未经许可、禁止转载*********



    (本帖将尝试通过Python代码写网络爬虫,来汇总整理海贼王资讯信息)
    (没有编程基础,完全自学,不小心成功了,最后会给出代码以及爬取的信息)


    项目背景:
      前期,为了更好地收集整理海贼王资源,本人粗略地整理了海贼王各类资源的出版信息(帖子地址:http://bbs.talkop.com/thread-123611-1-1.html),得到了许多大佬的翻牌,特别是鹰大建议“增加每一话的JUMP发售日”,但海贼王已经有接近1000话,想要一话一话的整理发售日信息,实在是一个宏伟工程,不仅费时费力,而且容易出错,加之最近Python编程的火热,于是有了编程解决的想法,也就是这个帖子。


    项目准备:
      1、Python学习(网上免费资源大把,为避免广告嫌疑就不推荐了;而且其实也不用学很深,学下基础然后研究一个案例,照葫芦画瓢也是可以的,没错说的就是本人);
      2、找一个海贼王的资源站,带海贼王单话发售日信息的;
       (本项目选择的是航海王wiki:https://onepiece.fandom.com/zh/wiki/%E8%88%AA%E6%B5%B7%E7%8E%8Bwiki)

    项目开始:(部分描述可能不专业)
      1、确认所需要的信息是否为HTML静态存储:  
      其实也很简单,打开有所需要信息的页面,右键查看源代码,搜索所需要的信息,如果能查找到,就是静态存储;否则就是后台动态生成;
      很荣幸,航海王wiki的信息都是静态存储;
      2、确认下网站内容是否允许爬取,查看网站的robots协议:
      直接在网站后输入“robots.txt”确认是否可使用网络爬虫爬取数据,即https://onepiece.fandom.com/robots.txt,很荣幸Allow允许;
      3、正式开始:
      其实网络爬虫和正常访问网页是一样的,所以流程是打开网页,获取信息,存储信息。
      然后打开网页获取信息常用Python的requests库;
      为了方便查到所需要的信息又常用Python的beautifulsoup库;
      
      3.1 网页网址生成:
      多打开几个wiki页面不难发现,网址是相对固定的,仅变更下查看的话数即可;
      https://onepiece.fandom.com/zh/wiki/X%E8%AF%9D ;X就是话数的位置;
      所以X位置我们使用一个递增数列(递增循环)就能轻易解决网址问题;
      代码:
       start_url = "https://onepiece.fandom.com/zh/wiki/"
        end_url = "%E8%AF%9D"
        for i in range(0, 988):
           url = start_url + str(i) + end_url
       
      3.2打开网页接收信息部分:
      确实没学过Url等网页信息,那我们不如站在巨人的肩膀上,于是参照别人的案例稍微修改下即可,毕竟都是打开网页接收网页源代码;
      代码:
        def getHTMLText(url):
          try:
             r = requests.get(url, timeout = 20)
             r.raise_for_status()
             r.encoding = r.apparent_encoding
             return r.text
          except:
             return ""
         3.3从接收信息查找所需部分:
      这部分是最难的了,因为需要具体问题具体分析了,本人也是看了很多案例,尝试了数十次,什么正则表达式,什么XML信息标记啥的,各种浏览;
      直接说结论吧:航海王wiki是XML标记的,通过网页源代码的标签可以查找到我们所需的内容:
      代码:
        soup = BeautifulSoup(html, "html.parser")
        souplist = soup.find_all("div", "pi-item pi-data pi-item-spacing pi-border-color")
        Hzlist = []
        Hzlist.append(str(i) + "话")
        for sl in souplist:
            for sll in sl.children:
                Hzlist.append(sll.string)
                for j in range(30):
                    try:
                        Hzlist.remove("\n")
                    except:
                        continue
        因为航海王wiki里也不是每一话海贼王都有发售日信息,代码中加入了部分容错机制;而且也不是直接找到发售日,中间有很多冗余数据,又使用循环删除了;
      
       3.4输出所需内容
      上一段代码已经将所需内容存储在列表里了,输出就极为简单了;
      代码:
        print(Hzlist)
      输出界面:(最终程序有稍微优化)
       爬虫界面.PNG
      剩下的就很简单了,复制到Excel里,按“逗号”分列,然后稍微处理下即可。


    项目感悟:
      其实看似简单的几行字,本人也断断续续学了一个月,虽然网络鼓吹Python多么多么简单,但也不是看一两天就能学会的。但依然很感谢海贼王,让零编程基础的我有动力去尝试通过编程来解决一些海贼王信息收集整理;
      相信论坛里也有很多编程大神,对于本人班门弄斧,切勿嫌弃,需要优化的地方也请多多指导。

    最后给出本人的代码及输出文件。
    航海王wiki信息抓取.rar (18.96 KB, 下载次数: 221)


      
      
      

    评分

    参与人数 1贝里 +10 收起 理由
    鹰目 + 10 感谢分享

    查看全部评分

    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-10-6 15:37
  • 签到天数: 973 天

    [LV.10]以坛为家III

    18

    主题

    392

    回帖

    2348

    积分

    超新星

    积分
    2348
    发表于 2020-8-29 18:12 | 显示全部楼层
    666 这是一个技术贴,期待继续分享~
    收起回复
    在品尝过胜利与败北,仓皇逃窜痛苦流涕的滋味之后,男人才会真正长大。哭也没有关系。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-16 14:46
  • 签到天数: 1513 天

    [LV.Master]伴坛终老

    54

    主题

    3999

    回帖

    6812

    积分

    七武海

    积分
    6812
    发表于 2020-8-29 19:00 来自手机 | 显示全部楼层
    牛逼,技术大佬
    收起回复
    • 高石乐:没有没有,论坛肯定有大佬,我就是自学的小罗罗
      2020-08-29 23:10 举报回复
    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-9-24 15:59
  • 签到天数: 360 天

    [LV.8]以坛为家I

    9

    主题

    466

    回帖

    1530

    积分

    超新星

    积分
    1530
    QQ
    发表于 2020-8-29 19:06 来自手机 | 显示全部楼层
    这样确实方便多了耶(虽然我不会)
    收起回复
    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

  • TA的每日心情
    冷漠
    2024-4-20 11:35
  • 签到天数: 670 天

    [LV.9]以坛为家II

    30

    主题

    2306

    回帖

    4400

    积分

    超新星

    重度毛绒控

    积分
    4400

    记忆编造者

    发表于 2020-8-29 19:07 | 显示全部楼层
    计算机盲表示看了就头大,只能一个赞字奉上
    收起回复
    回复

    使用道具 举报

  • TA的每日心情
    吃惊
    2024-3-11 20:06
  • 签到天数: 897 天

    [LV.10]以坛为家III

    3

    主题

    2117

    回帖

    3864

    积分

    超新星

    积分
    3864
    发表于 2020-8-29 19:19 | 显示全部楼层
    看。。。看不懂啊
    收起回复
    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

  • TA的每日心情
    冷漠
    2024-4-28 09:13
  • 签到天数: 512 天

    [LV.9]以坛为家II

    1

    主题

    140

    回帖

    948

    积分

    海贼

    积分
    948
    发表于 2020-8-29 19:29 | 显示全部楼层
    66666,这是一篇技术贴
    收起回复
    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-8-16 15:49
  • 签到天数: 1179 天

    [LV.10]以坛为家III

    18

    主题

    589

    回帖

    2794

    积分

    超新星

    积分
    2794
    发表于 2020-8-29 19:33 | 显示全部楼层
    可以可以 与时俱进
    收起回复
    回复

    使用道具 举报

  • TA的每日心情
    冷漠
    2023-3-31 10:07
  • 签到天数: 774 天

    [LV.10]以坛为家III

    24

    主题

    491

    回帖

    3246

    积分

    版主

    积分
    3246

    奇迹的樱花

    QQ
    发表于 2020-8-29 20:07 | 显示全部楼层
    您好强!!!感谢分享!!希望我以后也能这么出息
    收起回复
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-8-31 14:42
  • 签到天数: 873 天

    [LV.10]以坛为家III

    5

    主题

    8409

    回帖

    1万

    积分

    四皇

    积分
    10341
    发表于 2020-8-29 20:56 | 显示全部楼层
    强大的海米
    收起回复
    欢迎访问TalkOP海道-海贼王论坛。论坛和汉化组是爱好者组织,非官方。坛友建的QQ群:456175547 坛友微信群:加talkopwx(若加不上请加talkopwx2)为好友后按提示回复。 会日语翻译、制图、加字幕的伙伴请注明来意添加汉化组报名QQ群:838368203,欢迎加入TalkOP汉化!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    APP下载|新手|活动|导航|手机版|小黑屋|TalkOP海道-海贼王论坛-海贼王中文网-航海王论坛-中国最大的海贼王论坛 ( 苏ICP备14043047号-1 )

    JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

    GMT+8, 2024-5-1 11:05 , Processed in 0.085794 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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