Python爬虫入门课程总结

目录

前言

一、Python爬虫的心得

二、pip模块

1.pandas

2.numpy

3.requests

4.BeautifulSoup

5.urllib

6.pymysql

7.sqlalchemy

8.pymongo

9.json

10.scrapy

11.gerapy_auto_extractor

12.gerapy

三、单个网页数据爬取

四、多个站点循环爬取数据

1.建立爬虫项目

2.配置Scrapy框架

(1)items.py的配置

(2)middlewares.py的配置

(3)pipelines.py的配置

(4)settings.py的配置

3.创建爬虫python文件

4.编辑爬虫代码

5.数据存储

6.结果截图

五、Gerapy的搭建流程

六、在Gerapy框架管理中配置五个项目并爬取数据 


前言

网络爬虫是一种从互联网抓取数据信息的自动化程序。如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一直小蜘蛛,沿着网络抓取自己的猎物也就是数据。互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前。本文以人民网的单个页面(http://health.people.com.cn/GB/408568/index.html)和民生网(http://www.msweekly.com/index.html)的整体内容为爬取对象,一是为了完成爬虫作业,二是为了记录自己的学习过程。

一、Python爬虫的心得

在学习这门课程之前,我一直都在自学JAVA和C++语言,当时在我的认知中Python也是与前者相类似的一种计算机语言,当我通过这门课程真正得接触到Python语言时,其高效性和便捷性深深使我震撼。

课程一开始,老师的授课方式就让我耳目一新,并非使用传统的系统化授课方式,而是直接进入实战,这充分的调动了我的积极性和求知欲。

一个好的开始当然离不开工具的安装和使用,老师带着我们安装了必备的工具,例如Anaconda、Pycharm、Mysql等。当我认为就要开始写程序、代码、算法的时候,一个新的词汇进入了我的视线—网络爬虫。

当如今网络资源越来越多,我们已经眼花缭乱,没有办法一条一条去寻找总结,这时候爬虫凸显了自己的价值;其实本质上来说爬虫就是一段程序代码。任何程序语言都可以做爬虫,但是繁简程度不同,在我看来Python爬虫是当下最主流最好用的方式。从定义上来说,爬虫就是模拟用户自动浏览并且保存网络数据的程序。

在课程的学习中,先学习了对单个网页的数据进行爬取,利用BeautifulSoup爬取url的总体数据,然后通过模糊定位循环找到目标数据,将数据转换成DataFrame数据,最后通过引擎与本机的Mysql数据库和MongoDB数据库相链接,然后将数据导入到数据库中形成数据表单,值得一提的是Mysql数据库需要修改字符格式,否则会导入失败。

爬取单个网页的数据当然不够用,接下来在老师的指导下,我利用Scrapy框架建立了一个爬虫项目,对items,middlewares,pipelines,settings文件进行配置,以达到循环爬取多网页的数据的目的,在这个项目中我初步认识了爬虫启动start_requests、列表解析parse、内容解析parse_detail、以及数据存储的过程和工作原理。实现过程中并不像我说的那么轻松,中途经历了无数的报错,我通过百度和询问老师最后都一一解决,这是非常有意义的,让我懂得了识别报错以及如何解决,这对我以后的工作有着巨大的帮助。

为了便捷的对多个项目进行数据爬取,老师带领我搭建了Gerapy环境,在Gerapy中我创建了五个项目,同时让五个项目启动爬虫,有了之前的实验经验,让我操作起来也得心应手,很快就得到了目标数据。

学习Python网络爬虫并不是一蹴而就的跨越,而是聚沙成塔的修行,只是脚踏实地做好每一步,才能不断充实和提高自己。

二、pip模块

1.pandas

Pandas是当前最流行、最常用的数据分析工具。当处理表格数据(比如存储在电子表格或数据库中的数据)时,pandas是最适合您的工具。它将帮助您探索、清理和处理您的数据。数据表被称为DataFrame,panda支持与多种文件格式或数据源的集成(csv、excel、sql、json、parquet…)。从每个数据源导入数据是由前缀为read *的函数提供的。类似地,to_*方法用于存储数据……选择或过滤特定的行和或列?过滤条件下的数据?在pandas中可以使用切片、选择和提取所需数据的方法。它是基于numpy,且集成了matplotlib模块。

2.numpy

    Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy。

Numpy的核心是ndarray对象,由Python的n维数组封装而来,但通过C语言预编译相关的数组操作,因此比原生Python具有更高的执行效率,但仍然使用Python语言编码,这样就同时具有简洁的代码和高效的运行速度。ndarry与数组有些区别值得注意,numpy数组中的元素都具有相同的类型,并且在创建时就确定了固定的大小,这与Python数组对象可以动态增长不同。

3.requests

Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。

4.BeautifulSoup

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

5.urllib

使用 Urllib 的 request 模块我们可以方便地实现 Request 的发送并得到 Response. 1、urlopen () urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。

6.pymysql

pymysql是一个连接mysql数据库的第三方模块,可作为连接mysql数据库的客户端,对数据库进行增删改查操作

7.sqlalchemy

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

8.pymongo

pymongo是Python中用来操作MongoDB的一个库。. 而MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。. 其文件存储格式类似于JSON,叫BSON,不严谨、通俗地理解,就是Python中的字典键值对格式。

9.json

模块json能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值