【指引】新手如何自学网页爬虫(更新完结)

本文是作者在自学网页爬虫过程中的经验分享,涵盖了从Python/Java基础知识到HTML、CSS、JavaScript的学习,以及JQuery、PHP的相关知识。介绍了常用的爬虫库如Requests、BeautifulSoup4、Scrapy和Selenium的使用,并提到了数据存储方法,包括Openpyxl、JSON和SQL。文章适合初学者,提供了学习路线和推荐资源。
摘要由CSDN通过智能技术生成

前导:做网络爬虫(Web crawler)是方便大量收集、跟踪数据的相当便捷的方法。笔者在过去一年内,做过上市项目信息收集,WHO官网致病数数据收集,京东商品信息收集,以及Bilibili视频信息收集,微信公众号历史文章抓包,各大媒体网站数据抓包,并尝试在服务器搭载爬虫。之前的项目中,全靠自己摸索如何掌握爬虫所需要的前置知识,并不断找到更快的爬虫方案,现汇成一个新手指引分享给大家,希望对想自学/提高生产力的同学们有帮助。如果有不妥当的地方,欢迎大家在评论区指正~

全文7538字,可以先存着,学习过程中慢慢看。本文欢迎转载,转载请标明原文出处。

自学流程简述

所需自学的爬虫语言(按顺序):

  1. Python/Java (基础语言,python对新手很友好,但学过C++的同学直接上手Java就好了)
  2. HTML (通过脚本,能找到所要爬取内容对应的Element)
  3. CSS (通过Style sheet,找到Element的路径)
  4. JavaScript (了解网页与服务器交互原理,从而绕过前端(HTML),找到对应服务器,直接提取数据)
  5. JQuery (对JavaScript进行补充,了解前后端如何进行数据交互)
  6. PHP (了解后端的运作方式,但不是必备知识)

所需自学的外置库

  1. urllib3库 (以爬虫(crawler)本身身份向服务器发请求,现在会被服务器直接封杀)
  2. Python Requests库 (伪装成浏览器向服务器发请求,得到html代码,最为常用)
  3. 抓包+API爬虫 (用requests,只不过在抓包分析了服务器数据来源网址,直接访问储存的数据,比爬html网页前端快多了)
  4. Scrapy库(是一个完整的爬虫构架,有访问,有缓存,有并发。如果说requests+bs4是散装零件,scrapy就是整机,更容易上手,但灵活性也降低了)
  5. Python BeasutifulSoup4(bs4)库 (解析爬取下来的网页html代码,从而找到对应元素)
  6. Python Selenium库 (用机器人完全模仿浏览器,直接打开搜索引擎,模仿用户操作爬取内容,最慢的爬虫,但基本不会被封杀) (其自带的html解析方法不逊于bs4); PhantomJS跟selenium一样,只不过无界面,节省内存。

所需自学数据储存流程:

  1. txt/csv读写
  2. Python openpyxl (Excel读写)
  3. json (在后期API调用数据时能直接将发来的json转化为dictionary)
  4. sql/mangoDB读写 (数据库读写,方便将爬虫搬运到服务器上运行)

自学流程简述

为了写爬虫,所学这些语言的目的如下:

-Python/Java

笔者目前只接触了C++和Python两个基础语言,Python相对来说容易上手,对运行时间和内存分配没有编程要求,而且安装的库也丰富而且容易上手,所以之前的案例我都是用Python完成的,基本学完了函数就能解决爬虫问题。此外,Java也支持很多外置库,而且跟前后端语言结合度更好,也很推荐使用。

-HTML

HTML是爬虫的入门语言,想要爬取网页上的数据,就得能读得懂网页代码内容,你不学HTML就没法明白爬虫!

一般都是ctrl+shift+C (windows)或者command+shift+C(Mac)来查看网页源代码,然后找到所要爬取的元素的路径,建议使用Chrome浏览器debug console。这个路径下的元素就可以被bs4库解析后找出来,元素内的文字部分或本身者链接部分就可以被转换为字符串了,可以保存在本地。

也有不少网页的数据储存在不同结构里,比如表格、下拉条、选项框内,因此就要懂得找不同的元素,通过学习HTML即可。对于动态元素,比如下拉刷新页面了之后才能呈现的,这我就放到Selenium部分讲解。对于"Get"服务器直接就能返回的HTML代码,requests库就能爬取下来。

-CSS

会了HTML就已经成功一大半了,找元素自然可以根据元素种类和名称来找。但有些元素的html路径并不是固定的,而可能随着页面尺寸改变而改变,这就需要CSS/Xpath来找元素。

在下面这个图里面,copy的路径可以是html(外部html和内部html), Xpath(相对路径),以及selector path(通过css筛选器选取元素)。学习HTML可以方便你了解元素作为文本,是如何存的。 学习CSS可以方便你了解元素的呈现格式(位置,大小,颜色)是怎么样的,从而能更准确的找到元素。CSS会让你的代码更灵活。例1

我之前在做京东商品信息爬虫时,就遇到翻页按钮被透明图片遮罩(程序员在耍小聪明啊),于是selenium就傻乎乎的点了透明按钮,然后就给封禁了。所以CSS selector也可能没有用,这个时候就要考虑xp

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值