被迫营业系列

每次都在挖坑,CSDN上挖的坑尤其多,哈哈哈哈哈~这是一篇非书面语写就的文章,毕竟枯燥且充实的code需要欢脱的外在来包裹,这样的糖衣?也比较容易服用呢~

最近实习遇到一个小需求,大致是需要根据 英文地址索引具体建筑物,并获取相关信息。做爬虫的动力是,需要手动search的地址数据比较多,经过手动验证,获取到有效信息的source比较固定,且目测目标网站几乎没有反爬策略,故而产生了为何不生成一个小型的库来简化操作的想法。

太长不看系列:

一、目标网站分析

如前所述,我想建一个地区建筑物信息的database,经过筛选确定了hk置业作为目标网站。

二、读写模块

三、数据清洗

四、遇到的各种bug

五、下一步的尝试及思考(挖坑真快乐!)

5.1. 提高爬取速度:

  • 分布式, 这一块食用这篇博客就基本上搞定了https://blog.csdn.net/SL_World/article/details/86633611
  • 分布式更多的好复杂,如果你是写Java的,那么你肯定比我懂得多23333

5.2.  简单反爬取机制:

如何应对具有反爬机制的网站,验证码,必须登录,访问限制等。这次做的小爬虫项目里没有遇到这些,因为我选择的目标网站只是一个hk的信息展示类页面,更具体地说是房产中介的网站。由于在实施时人工选择了更易爬取且目标信息更清晰的静态网站(这是一句委婉的承认自己菜的说法哈哈哈),项目绕过了这些障碍。 老实讲, 这些策略在内地的很多网站上是很常见的,因为大量的爬虫会对网站服务器造成大量负担,而且更容易遭受Dos攻击。

5.2.1 关于验证码:

目前的解决方法是连接一个验证码调取网站,直接连接到它们的接口上,当然这个也需要花费一些银子。

这一类的网站或者说,小型众包平台的运行逻辑,我之前大致了解过,他们招募了很多在线赚钱的刷单者(大致是同一批人)(蚂蚁,腾讯和百度都有类似的微任务平台,只不过他们的业务仅限于供自身业务线使用)(还有一种动态的团队,他们负责招募固定的人员给一个basic pay,之后有需求就不断地反馈)(这个跟人工智能火起来前期数据采集和线框数据标注的模式很像,基本上是个产业链了)

突破网站验证码的方法大致是调取这一类接口,在目标网站需要交互的部分打包发回去。这一部分仔细说来又涉及到三次握手四次挥手,在你伪装成浏览器的代码部分加一些改动,具体目标网站请求和相应的方式可能有细微差别,如果用到了我会继续补上笔记的哈哈哈(挖坑挖坑,技术Flag儿童欢乐多)(Ps,这一块的博客和资源写的都还挺好的,有需要请自行google,我主要参考了这篇博客: https://blog.csdn.net/qq_40604853/article/details/83307011

5.2.2 关于模拟登录及虚拟手机号码进行注册及验证

(这一块是另外一个产业链23333)

爬虫用到的模拟注册和突破验证的这一点功能,一般是找一些网络运营商提供者,或者打码平台之类的,我们的目的是收集需要的信息,爬取其实只是最开始的一步,作为数据分析人员(预备的哈哈哈),由于能够使用到的数据脏数据比较多,所以还要首先进行data cleaning工作。这一类的模拟验证平台,当然也是要银子的,同样是依据使用量买服务,有一些还不错的试用套餐,我们小型项目是够用了。 这一类的不想介绍太多,因为它的用法和合法性其实都还存疑。而且顺便说一句,很多虚拟的垃圾推销电话和诈骗电话等,他们除了去非法盗取用于的个人信息外,还会使用到这一类的平台进行拨出。(挖坑挖坑,关于他们拨出电话这一块其实还有基站劫持等技术,如果你学过通信相关的知识可能会比较熟悉,欢迎入坑哈哈哈)

5.2.3 关于访问限制;

这就不得不提到IP代理池:

先说结论,IP代理可以选择是否告诉服务器你使用了代理,高级一点的使用是完全随机模拟浏览器访问,让对方服务器认不出来你用了代理,这样就可以跟正常点击浏览进行相同的操作路径。

这一部分在早上的公交上看了一部分,得到的结论是:从成本上讲,有两种选择,分别是自建一个Ip池,爬取并搜集更新免费IP地址(付费IP池的试用部分),使用的时候rand一下就可以,或者直接花个几十元钱买几个小时的代理,基本上小型网站应该够用。 从效率和可用性上讲,由于爬取到的免费池太容易失效,所以不如选择后者(此处没有广告,所以就不推荐好用的ip代理了,可自行谷歌,有一篇专门对比可用性的博客,链接我贴在这里,请自行食用:https://cuiqingcai.com/5094.html)。 还有一种很费力不讨好的方法,租个服务器自己搞代理,如果只是爬虫玩一玩的同学,可以直接跳过,如果有时间而且有兴趣,可以考虑阿里云这种给新开发者的试用服务器,以使用量收费的机制还可以。但是要承担使用之后反复被阿里云售前人员打扰的副作用(是的此处是个吐槽23333)。

关于在工程中使用IP代理的方法,可以参考这篇文章: https://blog.csdn.net/weixin_40372371/article/details/80154707

还有github上的一个项目:https://github.com/jhao104/proxy_pool

5.3. 动态网站爬取

js+css的样式使得网站很美观,而且动态从服务器里调用使得网站安全性得以提高,所以还是很多网站用js的。

或者至少有一部分组件使用了js,因为这样可以动态更新。这一部分的技术处理在学习教程上有提到过,我这里重新回顾一下:

、、、、、、(此处放 抽取投票数的 笔记)和 byhand里的代码

5.4. 如何优雅选择目标内容;

刚开始接触爬虫的时候可能被html繁杂的布局劝退(如果网页设计这类的课程你还是用dream waver学的话,哈哈哈哈)

然而啃一啃HTML还是有好处的,这样你就会觉得xml就也还好,之后用json格式存取数据的时候也会意识到他们一脉相承。 个人觉得学习时这种建立连结,似曾相识的感觉比完全陌生要一些,这样只要在自己的知识体系里建立link和一个差异字典就可以了。使用相关知识的时候在脑海中search一下,并比对一下差异字典,大脑做这项工作时时间复杂度几乎是O(n)的,并且实在想不起来的时候还可以在google吖!(不适用于语言学习>=<,同一个语系下的不同种语言之间不小心讲串了简直GG,西班牙语加德语的风味并不好,掺杂法语发音味道也很诡异,尴尬的是有的时候你只能想起来西班牙语的发音但是你打算讲的是英语23333,所以语言还是先努力熟练一门再在你的大脑中开一块内存来存另外的语言,时常维护大脑里的这块库到语言神经中枢的通路,不然就会变成沉默的语言库,有口难开,跑题了23333)

如果很幸运,你需要的东西在 代码检查之后能够找到,也就是直接以文字出现在某个class的内容里,那么你只需要多搜索几次就可以找到。

(这里放一张 网页 查看源代码,红圈找到我们要的东西的图)

如果你找的东西是js里的,那么你需要很仔细的找一找,从文件的编写逻辑和网站建设人员的写作习惯,还有观察network标签的变化。reload之后页面会重新加载,network页面会出现几个峰值,那么变化量较大的很大概率上就是网页中变动的部分,通常也是我们需要的部分。因为静态的框架部分考虑到资源节约,不会被反复刷新,也不会被反复变更,这样这部分对流量占用就没什么贡献,故而通过观察network变化来寻找main document是一种很直接有效的方式。

如果以上方法你仍觉得过于繁琐,那么我要缅怀一个神器(  这里需要加一些这个小工具的资料)

5.4.2 关于正则

曾经它可以快速进行元素分析,这样在各种html标签中你的目标元素就会脱颖而出,而你所要做的就只要写个正则把它取出来就好。

匹配url的时候经常会用到这个:

#HTML 标签:
/^<([a-z]+)([^<]+)(?:>(.)<\/\1>|\s+\/>)$/#Unicode 编码中的汉字范围:
/^[u4e00-u9fa5],{0,}$/

这里提到了正则,有兴趣的话可以看一下我的另一篇常用正则表达式哈哈哈:^ ^  这里继续挖个坑,下一步是否能完成一个 根据input 识别检索出已有库中的信息,并且自动清洗的小工具。 这个需求是一个很可爱很有爱的小姐姐提出来的,所以如果有人实现了也可以联系我啊嘿嘿~

https://blog.csdn.net/zhujialiang18/article/details/102750229

5.5. 关于存储,mangoDB

坑再次出现了哈哈哈。

这次因为项目不大,所以直接存到csv里了,偷个懒偷个懒。 讲个笑话:==>

之前学了Mysql和他的一些框架,现在最多用用Sql Server,有兴趣的可以看看这篇对比:

https://blog.csdn.net/SL_World/article/details/86633611

还有这篇

https://blog.csdn.net/qq_21057881/article/details/71079920

感兴趣的事情总会不断去想要深挖或者拓展,算是一种学习上的变相的贪婪算法吧,当前步 做出 当前最有策略,且不影响全局最优,接下来的事情就交给子问题去做吧哈哈哈~

以上,算是这次小型项目的笔记和总结,写不动了哈哈哈~

欢迎各位大神光临。

小鹿爬虫系列——静态网站页面爬取相关推荐

  1. python3爬虫系列16之多线程爬取汽车之家批量下载图片

    python3爬虫系列16之多线程爬取汽车之家批量下载图片 1.前言 上一篇呢,python3爬虫系列14之爬虫增速多线程,线程池,队列的用法(通俗易懂),主要介绍了线程,多线程,和两个线程池的使用. ...

  2. java爬虫系列(二)——爬取动态网页

    准备工作 项目地址 网页解析工具地址 启动网页解析器 根据系统选择所需文件 指定端口号启动工具 项目配置 seimi.properties SeimiAgentDemo.java 分析原网页代码 Bo ...

  3. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  4. python爬虫反爬机制_浅谈爬虫及绕过网站反爬取机制之Python深度应用

    我们中公优就业的老师希望能给那些面临困境的朋友们带来一点帮助!(相关阅读推荐:Python学习就看这里!) 爬虫是什么呢,简单而片面的说,爬虫就是由计算机自动与服务器交互获取数据的工具.爬虫的最基本就 ...

  5. Python之Scrapy爬虫(热门网站数据爬取)

    第一关:猫眼电影排行TOP100信息爬取 代码: item.py文件 import scrapy class MaoyanItem(scrapy.Item):#********** Begin *** ...

  6. Python爬虫应用实战-网站数据爬取及数据分析

    实战一:中国大学排名 前言 由于上一篇文章中教会了大家如何存储数据,但是由于篇幅过大,就没有加入实战篇.想必大家也等着急了吧,所以今天就为大家带来两篇实战内容,希望可以帮助到各位更好的认识到爬虫与My ...

  7. python爬虫可以爬取哪些有用的东西_Python爬虫系列(十三) 用selenium爬取京东商品...

    这篇文章,我们将通过 selenium 模拟用户使用浏览器的行为,爬取京东商品信息,还是先放上最终的效果图: 1.网页分析 (1)初步分析 原本博主打算写一个能够爬取所有商品信息的爬虫,可是在分析过程 ...

  8. python3爬虫系列之使用requests爬取LOL英雄图片

    我们最终目的就是要把抓取到的图片保存到本地,所以先写一个保存图片的方法(可以保存任何二进制文件).注意在windows下文件命名包含/ | ?可能会发生错误,有的英雄皮肤名称确实包含/,所以这里使用正 ...

  9. Scrapy爬虫之热门网站数据爬取--------第2关

    第2关:小说网站玄幻分类第一页小说爬取 任务描述 本关任务:爬目标网页的3本小说保存到本地MySQL数据库,目标网页为全书网玄幻分类首页. 注:考虑到单机(非分布式)爬虫的爬取时间和测试平台的压力,我 ...

  10. 爬虫概念以及网站首页爬取

    爬虫的概念简述 爬虫有什么分类 通用网络爬虫 聚焦网络爬虫 增量式网络爬虫 Deep Web 爬虫 爬虫的基本流程 发起请求 获取响应内容 解析内容 即 -指定url -发起请求requests.ge ...

最新文章

  1. mongodb和python交互
  2. 《Adobe Photoshop CS5中文版经典教程(全彩版)》—第1课1.2节使用工具
  3. jQuery EasyUI API 中文文档 - Documentation 文档
  4. oracle级联备库创建,ORACLE 11G 备库传备库级联传递(cascade dg) 的配置方法
  5. C语言指针:定义,使用及计算指针大小
  6. html左边高140px怎么设置,html:侧边栏+滚动div,高度设置为当前页面大小
  7. Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转
  8. 图像去畸变和添加畸变
  9. 中小企业CRM评测-用户交互_易客
  10. matchers依赖_Hamcrest Matchers,Guava谓词和Builder设计模式
  11. bzoj 1084 DP
  12. Struts 1 和 Struts 2 的线程安全
  13. jQuery初识 - jQuery关于节点的相关方法
  14. python函数分为哪几种_python数据挖掘常用工具有哪几种?
  15. struts2+freemarker+sitemesh乱码,解决了
  16. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
  17. as常用固定搭配_常用的有以下固定搭配
  18. SAP MM之移动类型(Movement type-MVT)_小七_新浪博客
  19. 单例模式与反射的攻防之【 道高一尺,魔高一丈 】
  20. 数据流标准差计算方法-不用事先计算均值

热门文章

  1. php 计算壬子,壬子日是哪一天 壬子日怎么算
  2. VS使用NPOI替换word模板中的关键字
  3. 年轻人逃离一线城市:外地人生存环境愈发严峻
  4. 用scratch2.0编写乒乓球游戏
  5. 最好的java代码编辑器_推荐 5 款牛逼的代码编辑器
  6. 计算机屏幕黑屏让程序继续允许,电脑软件让对方黑屏
  7. 黑群晖折腾之docker系列之迅雷远程下载
  8. killer queen ctf
  9. dubbo线程池exhausted
  10. 中国互联网迎来第二次电商盛世:谁淘汰了红极一时的淘品牌?