爬取武器类各种属性

Python 爬虫爬取武器过程记录

网站地址:https://wuqi.supfree.net/ufo.asp?classify=tank&page=1

分析网页

  • 爬取一种武器类的全部武器网址
  • 引用爬取网址爬取武器库中单个武器类中全部武器信息
  • 将所得信息进行Excel统计

正则表达式爬取速度最快,用原生手写代码进行爬取。

  • 分析网址:
    各种坦克的子网站链接id为坦克名称缩写,因没有规律可循所以第一步将全部子网站进行爬取保存,成功爬取后进行下一步操作。

  • 爬取网址

    • 执行中的问题

      • 问题(一):
        正则表达式查找过程中因未知错误每一页第一个武器的子网页链接爬取错误,爬取了多余无用信息,
      • 问题(二):
        代码爬取完毕后首要任务是将爬取到的全部网址保存在excle文档里面,这次遇到的问题是因为控制获取下一页数据的程序在整个获取程序外,为一个for循环语句,在循环过程中,内部代码无法对excle进行保存,因为每一次循环进行的保存都会覆盖到原本定位的excle文件中的固定位置,除非定义一个变量改变excle文件名,使之不再保存在上一次记录的文档里,此策略不可取,因为及将爬取的网站网址过多,页数过多,对此进行分文档储存会导致极大的占用储存空间,并且提取文件中的内容非常繁琐。
    • 解决问题的策略

      • 策略(一):
        因问题一不会影响正常的数据获取,,因为代码近乎相同,处理效率高,解决问题所花费的时间远小于查找匹配错误的原因,编写较为简单,且仅需要储存两个excle文件,因此,采的解决策略是将每一页第一个网址进行单独爬取,爬取其他网址时将第一子网页链接排除,最后组合两份爬虫爬出的数据得到全部链接。
      • 策略(一/2): 代码编写到后期出现很多问题,比如对代码进行读写时,需要频繁修改程序路径来调用两个不同的网址提取代码,一经报错修改后常常伴随着矛盾错误,因此需要对代码进行优化,我修改了正则表达式来提取整个网址,此次修改代码是因为在优化提取单个网址上武器内容的代码时收到的启发,一次性对全部正则都进行了优化,并且找到了我认为更加高效的正则表达式使用方法。
      • 策略(二):
        问题二中问题已概述这里不再进行说明,因为在主程序内部进行excle保存会导致重复覆盖数据,因此,将主运行函数增加一个返回值,并且将数据以list的方式输出,在循环内,主程序外进行list相加,使之保存在一个变量里,保存之后再统一进行excle保存。
  • 爬取单个武器信息与整合

    • 执行中的问题

      • 问题(一):
        爬取到的信息应该以什么类型的数据结构进行存储,以及整个代码如何进行构建。
      • 问题(二):
        武器网址信息中存在两个相同的标签,如何整理爬取。
      • 问题(三):
        如何整合并且存入excel文件中
    • 解决问题的策略

      • 策略(一):
        因为要把爬取的信息整合到excel表中,所以在编写代码之初考虑到储存问题,就将数据结构先行内定为列表了,字典虽然能够清晰的表示爬取网页中武器的各个属性,但是这不是我所需要的,字典比起列表更加复杂,因此我为了方便存入excel,优先选择了列表。既然确定了使用列表,那么如何将爬取到的属性存入列表又是需要考虑的问题,在这里我采取的方法是使用.append对列表进行储存,因为每一个武器网址的属性都不尽相同,所以,即是该武器没有次属性,正则匹配不到次属性,单它依然会在这个位置插入一个空值,也就是说,每一个属性都有他该存在的位置,这个位置不会因为爬取到的属性个数不同而改变。
      • 策略(二):
        最一开始采用的策略是用这两个相同标签将这两个属性都爬取下来,再对列表进行处理,第一开始的处理是对列表取第一个元素和第二个元素,比如anchor.append(a[1]),但是这种取法在获取到的属性为空时程序会报错,因此不可取,第二种方法也是目前我采用的方法为对列表进行切片处理,即将a[1]改成a[:-1],后来经过比对这两个相同标签的元素,发现存在隐藏标签,也就是说可以通过匹配隐藏标签来区分这两个元素。
      • 策略(三):对爬取网址的程序调用,使用from import来取出函数内的全部网址,并用for循环来遍历全部网址,再用另外一个for循环来将列表中全部元素依次存入Excel中,至此整个爬取武器类各种属性的代码全部完成。
全部评论

相关推荐

咦哟,从去年八月份开始长跑,两处实习转正都失败了,风雨飘摇,终于拿到offer了更新一下面试记录:秋招:多部门反复面试然后挂掉然后复活,具体问了啥已经忘了,只是被反复煎炸,直至焦香😋春招:base北京抖音hr打来电话说再次复活,准备面试,gogogo北京抖音一面:六道笔试题:1.promise顺序2.定义域问题3.flat展开4.并发请求5.岛屿数量算法(力扣)深度,广度都写6.忘记了,好像也是算法,难度中等其他问题多是框架底层设计,实习项目重难点~~~秒过😇北京抖音二面:三道笔试题:(为什么只有三道是因为第三道没做出来,卡住了)1.中等难度算法(忘记啥题了,应该是个数组的)2.认识js的继承本质(手写继承模式,深入js的面相对象开发)3.手写vue的响应式(卡在了watch,导致挂掉)---后知后觉是我的注册副作用函数写得有问题,有点紧张了其他题目多是项目拷打,项目亮点,对实习项目的贡献~~~第二天,挂,but立马复活转战深圳客服当天约面深圳客服一面:六道笔试题,由于面过太多次字节,面试官叫我直接写,不用讲,快些写完😋,具体都是些继承,深拷贝(注意对数组对象分开处理,深层次对象,循环引用),加中等难度算法题~~~秒过深圳客服二面:口诉八股大战:大概囊括网络,浏览器渲染原理,动画优化,时间循环,任务队列等等(你能想到的简单八股通通拉出来鞭尸😋)算法题:笔试题6道:1:找出数组内重复的数,arr[0]-arr[n]内的数大小为[1-n],例如[1,2,2,3,3]返回[2,3],要求o(n),且不使用任何额外空间(做到了o(n),空间方面欠佳,给面试官说进入下一题,做不来了)2:原滋原味的继承(所以继承真滴很重要)3:力扣股票购买时机难度中等其他滴也忘记了,因为拿到offer后鼠鼠一下子就落地了,脑子自动过滤掉可能会攻击鼠鼠的记忆😷~~~秒过深圳客服三面:项目大战参与战斗的人员有:成员1:表单封装及其底层原理,使用成本的优化,声明式表单成员2:公司内部库生命周期管理成员3:第三方库和内部库冲突如何源码断点调试并打补丁解决成员4:埋点的艺术成员5:线上项目捷报频传如何查出内鬼成员6:大文件分片的风流趣事成员7:设计模式对对碰成员8:我构建hooks应对经理的新增的小需求的故事可能项目回答的比较流利,笔试题3道,都很简单,相信大家应该都可以手拿把掐😇~~~过过过无hr面后续煎熬等待几天直接hr打电话发offer了,希望大家也可以拿到自己心仪的offer
法力无边年:牛哇,你真是准备得充分,我对你没有嫉妒,都是实打实付出
查看19道真题和解析
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务