02.29 想学python网络爬虫,应该怎么开始?怎么应用到实际的工作中?

北京旅行家


网络爬虫,说的简单明了一些,就是基于一定规则自动获取网络数据,不管哪种编程语言都可以轻松实现,python针对网络爬虫,提供了大量非常实用的模块和框架,初学来说非常容易,下面我简单一下python爬虫的学习过程,感兴趣的朋友可以尝试一下:

基础的网页知识

这个是最基础也是必须掌握的,我们所爬取的大部分内容都是嵌套在网页中,不管是文本、图片、链接,还是视频、音频都基于html编写显示,你要学习网络爬虫,首先最基本的就是要能看懂网页,知道爬取的内容嵌套在哪个标签中,如何去提取,如果你没有任何网页知识,建议学习一下,两三天时间就能搞懂,不需要精通,能基本看懂就行:

熟悉python基础

网页知识掌握差不多后,就是python入门,这个也是爬虫的基础,毕竟我们定义的所有爬取规则都是基于python编码实现,如果你没有任何python基础,建议好好学习一下(长久来说,也非常有益),基本的语法、语句、函数、类、文件操作、正则表达式等都要熟悉掌握,花个一两个周时间就行,相比较c++、java等编程语言,python学习起来还是非常容易的,入门门槛比较低:

python爬虫入门

python基础熟悉后,就是python爬虫入门,初学的话,可以先从简单易学的爬虫库开始,requests、beautifulsoup、urllib、lxml等都非常不错,官方带有非常详细的教程示例,很快就能熟悉和掌握,对于爬取大部分静态网页来说,都可以轻松实现,先获取网页数据,然后解析提取,最后再保存下来(动态网页数据的获取需要抓包分析,但基本原理类似):

爬虫实战进阶

爬虫基础熟悉后,为了提高开发效率,避免反复造轮子,这里你可以学习一下爬虫框架,python来说,比较著名,也比较受欢迎的就是scrapy,免费开源跨平台,只需添加少量代码,即可快速开启一个爬虫程序,爬取的内容来说,就可以非常多了,可以是文本、图片、链接、视频等,都是基于一定规则提取解析,最重要的就是多练习,多调试代码,不断积累经验,深入一些的话,就是多线程、分布式,提高效率:

python爬虫学习来说,其实不难,只要你有一定python基础,很快就能掌握的,数据获取下来后,最重要的还是分析,这才是重中之重,当然,python针对数据分析也提供了大量的包,比较常用的就是pandas、numpy等,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。


小小猿爱嘻嘻


学习Python爬虫首先要具备一些必备知识,

  • Python

  • html

  • 正则表达式

Python是我们用于爬虫的工具,结合requests、BeautifulSoup等第三方工具包可以实现程序的开发。而html是我们要爬的目标,需要了解其中标签的含义。另外,在爬虫过程中需要很多字段和标签的匹配,这会经常用到正则表达式。

当然,一个成熟的爬虫需要的技能远不止这些技能。下面我就以最简单的思路,逐步介绍一下如何开始爬虫,保证一文看完就能明白。


前言

就如同标题指明的那样,本文主要针对入门,如果寻求进阶,或者在爬虫方面走的更远,本文提供的帮助是微乎其微的,本文的主要目的就是用简单的方式、简单的语言帮助对网页爬虫感兴趣的同学。
目前网上有关网页爬虫的指导有很多,但是套路却是千篇一律,基本都是围绕以下内容进行展开,
  • CSS/html等网页知识
  • requests或urllib
  • BeautifulSoup或正则表达式
  • Selenium或者Scrapy
对于我来说,学习爬虫知识一项获取数据的工具,而不是工作的主要内容,因此,没有太多的时间花费在上述知识成体系的学习上面。上述提到的每块都涉及大量的知识,一段时间的学习之后容易让人陷入"云里雾里",然后就丧失了学习的兴趣,没有全局观、没有重点,最终使得学习效率非常低下。
本文不详细的讲解什么是CSS/html,怎么用requests或者urllib,本文主要目的是介绍怎么去爬取一个网站、爬取我们需要的资源,可能会用到上述一个或几个模块里的知识,对我们用到的功能了解即可,没有必要从头至尾的学习一遍,希望能够用这种方法让对爬虫感兴趣的同学对这项技术有一个统筹的认识,能够满足日常获取数据的需求,如果想要在这项技术上深入研究,可以后续学习其他成体系的课程,对上述模块认真、详细的学习。

准备工作

很多网页爬虫的教程中使用或者提及到很多工具,本文选择以下几项工具,
  • 网页浏览器(Google Chrome)
  • BeautifulSoup4
  • requests
网页浏览器主要用于查看网页html源码和检查网页单元使用,浏览器有很多,谷歌、火狐、IE等,每个人的喜好不同,可以根据自己的日常习惯进行选择,本文以Google Chrome为例进行讲解。
BeautifulSoup4是一个HTML、XML的解析器,它能够轻而易举的解析web网页,从中获取我们想要的单元和信息,能够避免筛选信息时的麻烦,它能够提供用于迭代、搜索、修改解析树的用法。在网页匹配过程中BeautifulSoup的速度并不比正则表达式快,甚至还要慢一些,但是它最大的优势就是简单、便捷,因此是很多网页爬虫工程中的必选工具之一。

安装

$ pip install beautifulsoup4
requests是Python大神Kenneth Reitz的力作,是一个用于网络请求的第三方库,Python已经内容了urllib模块用于访问网络资源,但是使用起来相对麻烦,而requests相比之下要方便快捷很多,因此本文选择用requests进行网络请求。

安装

$ pip install requests

动手实践

很多教程选择爬取糗事百科、网页图片,本文就选取另外一个方向,爬取我们常用的百度百科,这样更加直观、易于理解。
经常浏览网页,注意细节或者善于总结的会发现,网址主要有两部分组成,基础部分,和对应词条的后缀,例如上述百科词条,由基础部分https://baike.baidu.com组成,后缀是item/林志玲/172898?fr=aladdin,因此我们要爬取一个网站首先要获取一个网址。
第一步,要确定一个目标,你要爬取什么数据?
很多人会认为,这不是废话吗?我个人认为这是很重要的,有目的才会效率更好,在没有某种目标驱动的情况下,就很难带着问题和压力去做一件事情,这样会变得漫无目的,导致效率很低,因此,我认为最重要的是首先要清楚想爬取什么数据?
  • 网页上的音乐
  • 图片
  • 素材
  • ...
本文就以爬取百度百科词条内部链接和下载图片为目标进行讲解。
第二步,我们要获取一个基础的网址,百度百科的基础网址,
https://baike.baidu.com/
第三步,打开首页,
以林志玲的百度词条为首页开始爬取。
第四步,查看源码,
很多人都知道查看源码的快捷键是F12,不管是谷歌浏览器还是IE浏览器,都是这样,但是当按下F12之后会不由得疑问,"这是什么东西?",令人毫无头绪。
当然,可以一步一步的去了解源码,学习html的知识,然后用正则表达式去一步一步、一个单元一个单元的匹配我们想要的信息,但是这样未免太复杂了,我个人推荐使用检查工具。
爬取内部链接
指向我们想要了解的元素,
素,鼠标右键->检查,能够快速定位我们关注的元素。
我觉得到这一步就已经够了,最简单的网页爬虫就是反复的重复以下两个步骤:
  • 检查定位我们想要的元素和属性
  • BeautifulSoup4匹配我们要的信息
通过检查功能可以看到,百科词条内部链接部分的源码是这样的,
元素1:
元素2:
元素3:
元素4:
从上述4个元素可以看出,我们想要的信息词条内部链接在标签 中,标签中有以下几个属性:
  • target:这个属性贵姓在何处打开链接文档,_blank标明浏览器总在一个新标签页载入目标文档,也就是链接href指向的文档。
  • href:前面已经提过很多次,属性href用于指定超链接目标的链接,如果用户选中了标签 中的内容,则会尝试打开并显示href指定链接的文档。
  • data-*:这是html的新特性可以存储用户自定义的属性。
可以看出,我们想要的信息就在href中,也就是词条的内部链接。因此,我们爬虫的目标就很明确了,就是解析出href超链接。
到这里,浏览器检查功能已经发挥了它的作用,下一步问题就变成了我们怎么解析出标签中href的链接?
这时,BeautifulSoup4就派上用场了。
用BeautifulSoup4解析我们从网页上抓取的html,
soup = BeautifulSoup(response.text, 'html.parser')
看到这里也许会疑惑,html.parser是什么?
这是一种html的解析器,Python中提供几种html解析器,它们的主要特点分别是,
综合来说,我们选取html.parser解析器,
选取好解析器之后就开始着手匹配我们想要的元素,可是看一下html发现,网页中有很多 标签,我们该匹配哪一类呢?
仔细看一下会发现特点,target="_blank",属性href以/item开头的,于是就有了我们的匹配条件,
{"target": "_blank\

Jackpop


你好,我来回答下这个问题。看样子你是想从事Python编程方面的教育工作或者进入软件公司工作,我也是从事软件开发8年多了,主要以负责核心技术架构为主,目前也在从事编程方面的教育培训工作。


我觉得学习编程,兴趣是第一位的,你首先要喜欢上这门语言,才可以学习的持久,可以学的深入。


不知道你没有编程方面的基础,如果有的话,那就最好了,因为说实话,Python编程不难学的,和Java、C等比起来简单一些。建议你还是买一些Python方面的书籍来学,建议买国外写的一些IT书籍,质量更高一些。这里给你推荐几本:



爬虫知识是Python知识体系中的一部分,也是Python比较擅长和成熟的部分,目前已经有不少优秀的框架了,使用起来很简单,不过我建议你还是通过看书来有体系的学习一下比较好。


考证书的话,如果你是从事Python教育工作,那还有一点用处;如果你是进入软件公司上班,那我建议这个证书大可不必去考,公司不会看这的,也不会以这个评估你Python水平的高低,以你的实力说话。


如果你觉得学习Python有些枯燥,可以看下我发布的原创系列视频《跟我学Python,创意编程之旅》,@科技时代聊编程 ,谢谢,希望可以帮助到你。


科技时代聊编程


说实话考计算机二级证书基本没什么用,对工作也没帮助,还不如多练习,下面学习爬虫的路线,可以参考着学。

1、了解爬虫的基本原理及过程

大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

2、学习 Python 包并实现基本的爬虫过程

Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议你从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。

3、了解非结构化数据的存储

爬回来的数据可以直接用文档形式存在本地,也可以存入数据库中。开始数据量不大的时候,你可以直接通过 Python 的语法或 pandas 的方法将数据存为csv这样的文件。

4、学习 scrapy,搭建工程化的爬虫

掌握前面的技术一般量级的数据和代码基本没有问题了,爬虫最好框架之一。

5、学习数据库基础,应对大规模数据存储

爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。

6、掌握各种技巧,应对特殊网站的反爬措施

爬虫过程中也会经历一些绝望,比如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。

7、分布式爬虫,实现大规模并发采集

爬取基本数据已经不是问题了,你的瓶颈会集中到爬取海量数据的效率。这个时候,相信你会很自然地接触到一个很厉害的名字:分布式爬虫。分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。


卡西尼试验场


本文集详解网络爬虫的原理、工具、框架和方法。

详解从简单网页到异步加载网页,从简单存储到数据库存储,从简单爬虫到框架爬虫等技术。

类别:

  • 22个网络爬虫综合实战案例、30个网站信息提取
  • 详解爬虫的3大方法:、和
  • 详解爬取数据的4大存储方式:、、和
  • 详解Scrapy爬虫框架的安装、项目创建、文件使用及爬取数据的存储

引子

随着Internet的飞速发展,互联网中每天都会产生大量的。如何从这些非结构化数据中提取有效信息,供人们在学习和工作中使用呢?这个问题促使网络爬虫技术应运而生。

由于Python语言简单易用,而且还提供了优秀易用的第三方库和多样的爬虫框架,所以使得它成为了网络爬虫技术的主力军。

近年来,大数据技术发展迅速,数据爬取作为数据分析的一环也显得尤为重要。程序员要进入与数据处理、分析和挖掘等相关的行业,就必须要掌握Python语言及其网络爬虫的运用。

目录

第 1 章 Python零基础语法入门

本章介绍了Python和PyCharm的安装及Python最为简单的语法基础,包括简单的流程控制、数据结构、文件操作和面向对象的编程思想。

第 2 章 爬虫原理和网页构造

本章通过介绍网络连接原理,进而介绍了爬虫的原理,讲解了爬虫的基本流程,另外还介绍了如何使用Chrome浏览器认识网页构造和查询网页信息。

第 3 章 我的第一个爬虫程序

本章主要介绍了安装请求和解析网页的Python第三方库、Requests库和BeautifulSoup库的使用方法,最后通过综合案例手把手教会读者编写一个简单的爬虫程序。

第 4 章 正则表达式

本章主要介绍了正则表达式的常用符号及Python中re模块的使用方法,在不需要解析库的情况下完成一个简单的爬虫程序。

第 5 章 Lxml库与Xpath语法

本章主要介绍了Lxml库在Mac和Linux环境中的安装方法、Lxml库的使用方法及Xpath语法知识,并且通过案例对正则表达式、BeautifulSoup和Lxml进行了性能对比,最后通过综合案例巩固Xpath语言的相关知识

第 6 章 使用API

本章主要介绍了API的使用和调用方法,对API返回的JSON数据进行解析,最后通过使用API完成一些有趣的综合案例。

第 7 章 数据库存储

本章主要介绍了非关系型数据库MongoDB和关系型数据库MySQL的相关知识,并通过综合案例展示了Python对两种数据库的存储方法。

第 8 章 多进程爬虫

本章主要介绍了多线程及其概念,并通过案例对串行爬虫和多进程爬虫的性能进行了对比,最后通过综合案例介绍了多进程爬取数据的方法和技巧。

第 9 章 异步加载

本章主要介绍了异步加载的基本概念,以及如何针对异步加载网页使用逆向工程抓取数据,最后通过综合案例讲解了逆向工程的使用方法和常用技巧。

第 10 章 表单交互与模拟登录

本章主要介绍了Requests库的POST方法,通过观测表单源代码和逆向工程来填写表单以获取网页信息,以及通过提交cookie信息来模拟登录网站。

第 11 章 Selenium模拟浏览器

本章主要介绍了Selenium的模块的安装、Selenium浏览器的选择和安装,以及Selenium模块的使用方法,最后通过综合案例介绍了如何对采用异步加载技术的网页进行爬虫。

第 12 章 Scrapy爬虫框架本章主要介绍了Windows 7环境中的Scrapy安装和创建爬虫项目的过程,并通过案例详细讲解了各个Scrapy文件的作用和使用方法,而且通过多个综合案例讲解了如何通过Scrapy爬虫框架把数据存储到不同类型的文件中,最后讲解了如何编写跨页面网站的爬虫代码。


工匠理念


学习网络爬虫,首先需要系统的学习python基础知识,虽然不用学也能跟着别人的代码做,但是最好能系统的学习下基础知识,要不很多时候你是懵逼状态的,然后需要学习抓包分析数据知识,因为爬虫类的知识都是需要分析被爬去目标的数据结构,类型,在进行过滤筛选出自己需要的数据,不过现在有很多现成的爬虫框架,没必要自己造轮子,但是也最好能自己造轮子,这样有利于提高自己的编码能力。


huzibbs


现在很多网站都有教程的,个人建议可以先看看学习视频,我要自学网,不错的网站,可以看看,适不适合自己,如果,想要深入的话,系统地掌握的话,那就要买本书看看,自己可以先看看电子书,我平时看得,掌阅书城,里面有不少书,想学习,门路还是很多的,嘿嘿嘿


小白读书课


踏踏实实开始买本书,照着案例一个一个来,想要上天得一步一步来


分享到:


相關文章: