爬虫第一课:写爬虫的思路
什么是爬虫?
爬虫就是从网上获得数据,它是通过编程来实现的。对于非计算机专业的人来说,一提到编程两个字,可能就会觉得自己做不到。但其实并不是这样,编程就是通过写代码,来让计算机实现你的想法。你解决问题的想法,就会影响你编程时写的代码。对于爬虫这件事情,就是从网上获取数据,那么相对应的代码就不会有太大的变化。比如你爬取58同城的求职和爬猫眼电影的电影数据的代码并不会有太大的差别。我写过的每个关于爬虫的代码,基本60%以上的部分是一样的。
爬虫的思路
爬虫的目的是从网上获取对你有需要的数据,那么目的确定,思路就能确定。思路确定,代码就能确定。
爬虫的思路就是:
1、获取url(网址)。2、发出请求,获得响应。3、提取数据。4、保存数据。
下面逐个解释。
1.获取url(网址):
url是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。就是我们平时所说的网址。
浏览器就是通过网址向服务器发送请求,来获取信息的。浏览器和服务器的关系如下图所示:
浏览器向服务器发出请求,服务器给浏览器响应。一个浏览器可以访问很多个服务器,访问具体哪个服务器是根据浏览器中输入的url,比如www.baidu.com。就是访问百度的服务器。
有时url可以直接复制就可以了,但有时如果想要获取的数据在许多网页,比如我想获得前20页的租房数据,那么一个一个复制网址太麻烦,可以通过找到规律,然后构造出来所有的url。
还有时url特别长,你可以适当的去掉里面的字符串,比如淘宝网搜索口红之后的url是’https://s.taobao.com/search?q=口红&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306’。
你可以将它改成’https://s.taobao.com/search?q=口红’,效果是一样的。
2.发送请求,获得响应
服务器里有大量的信息,浏览器是没有信息的,它只负责发送请求和得到响应。比如我想获得一些电影的数据,那我就先得到我需要数据所在的url,比如’https://movie.douban.com/’,然后通过浏览器向豆瓣的服务器发送请求,获得响应的响应。但是我们写爬虫并不是通过浏览器获得数据,而是通过python写的爬虫代码来获得数据。但是如果服务器识别出了发送给它的请求时爬虫发出的,那么服务器就会停止返回数据。这就需要写一些代码将我们写的爬虫包装成浏览器,向服务器发送请求,并获得响应。响应就是该网页的源代码,可以在网页中右击选择网页源代码看到。
3.提取数据。
提取数据就是在第二步中,我获得了服务器给我的响应,但这些响应大多数不是我想要的,我只需要其中的一部分,比如说服务器给我返回了如下所示的信息
但这些信息看起来眼花缭乱,我只想要下图所示的信息
或者如下图所示看起来更整齐的数据
这样的信息少而整齐,方便存储,这就是数据的提取。就像一层过滤网一样,将没用的东西过滤掉,将有用的东西留下来。数据提取的方法有许多,比如正则表达式,还有beautifusoup库。正则表达式是比较常用的方法,它是根据网页的源代码来提取数据的,不需要考虑网页的结构。
4.数据的保存
数据的保存就是将第三步提取的信息保存到Excel或数据库中,方便下次使用时查看和分析。数据保存这一步需要写的代码几乎是固定不变的,没什么技术含量,也不需要刻意去记,每次使用复制粘贴就可以。代码如下图所示:
#数据保存f=xlwt.Workbook(encoding='utf-8')sheet01=f.add_sheet(u'sheet1',cell_overwrite_ok=True)sheet01.write(0,0,'name') #第一行第一列sheet01.write(0,1,'score')sheet01.write(0,2,'price')sheet01.write(0,3,'recommand_ratio')sheet01.write(0,4,'people_num') sheet01.write(0,5,'location')#写内容for i in range(len(DATA)):sheet01.write(i+1,0,DATA[i]['name'])sheet01.write(i+1,1,DATA[i]['score'])sheet01.write(i+1,2,DATA[i]['price'])sheet01.write(i+1,3,DATA[i]['recommend_ratio'])sheet01.write(i+1,4,DATA[i]['people_num'])sheet01.write(i+1,5,DATA[i]['location']) f.save(u'E:\\猫眼电影.xls')
- 总结
爬虫就四步,1、获得url。2、发送请求,获得响应。3、提取数据。4保存数据。
第二步和第四步过程的代码几乎是不变的,不需要多深的理解,看几个例子就可以记下来了,每次写代码这两个部分可以直接复制。第三步提取数据是每次写爬虫变化最大的地方,也是写爬虫代码最需要时间的和思考的地方,我觉得也是爬虫的核心,需要认真学习和理解。第一步获得url主要就是看翻页之后网址的变化,然后根据变化的规律去把每一页的url构造出来,比如淘宝网搜索关键字口红后每一页的url是:
第一页:‘https://s.taobao.com/search?q=口红s=44’
第二页:‘https://s.taobao.com/search?q=口红s=88’
第三页:‘https://s.taobao.com/search?q=口红s=132’
…
那么够造出所有这些url的代码就是:
比如我们先要前10的url吧
urls=['https://s.taobao.com/search?q=口红s={}'.format(i*44) for i in range(1,11)]
这就是爬虫的整体框架,是不是很简单,那就把它拿下吧。
爬虫第一课:写爬虫的思路相关推荐
- Python网络爬虫第一课----Python网络爬虫基础《http和https协议》
Python网络爬虫第一课----Python网络爬虫基础<http和https协议> 一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protoc ...
- 瑟瑟发抖,小白的python第一课——网络爬虫
作为python小白,总是在网络上看到关于python爬取各种数据的新闻,于是决定尝试之! 一:首先是python的安装,下载地址: https://www.python.org/downloads/ ...
- 【Python爬虫】第一课 Python爬虫环境与爬虫简介
1.1 认识爬虫 网络爬虫作为收集互联网数据的一种常用工具,近年来随着互联网的发展而快速崛起.使用网络爬虫爬取网络数据首先需要了解网络爬虫的概念和主要分类,各类爬虫的系统结构,运作方式,常用的爬取策略 ...
- 手机写python爬虫_可以写爬虫的那么多,为什么只有python火了?
网络爬虫: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
- python requests的作用_Python爬虫第一课:requests的使用
requests模块的入门使用 注意是requests不是request. 1.为什么使用requests模块,而不是用python自带的urllib requests的底层实现就是urllib re ...
- 爬虫第一课——教你学会使用requests库
目录 前言 一.发送请求的一些方式 (一)GET 1.url 2.headers 3.proxies 4.timeout 5.params 6.verify (二)POST 1.url 2. head ...
- python爬虫第一课 开发环境配置
一.Python3的安装 二.请求库的安装 1.requests的安装 直接pip安装:pip3 install requests 2.Selenium的安装 selenium是一个自动测试化工具,利 ...
- Python爬虫——第一个小爬虫(经典)修改版
贴吧图片的爬取 一.页面获取 要让python可以进行对网页的访问,那肯定要用到urllib之类的包.So先来个 import urllib.request 由于Python3里的urllib模块已经 ...
- java 爬虫 保存cookies_写爬虫,免不了要研究JavaScript设置cookies的问题
那天碰到这样一个网页,用浏览器打开很正常.然而用requests下载URL却得到"521"的状态码,返回的内容是一串压缩混淆的JavaScript代码.就是下面这个样子: 返回的是 ...
最新文章
- java 构造函数内部的多态方法 完全剖析
- android 打开wifi并链接到制定ip,当设备连接到Android中的WiFi时,如何获取蜂窝网络的IP地址...
- 利用Oracle分析函数实现多行数据合并为一行
- 【uni-app】分享
- JavaScript数据结构与算法——队列详解(下)
- 机器学习基本算法的sklearn接口
- python安装tensorflow报错_Anaconda安装tensorflow报错问题解决方法
- autoscan、aclocal、automake和autoconf区别
- Nature子刊:中科院动物所合作揭示灵长类血管衰老的驱动力
- [翻译]jQuery 1.5.1 发布,全面支持IE9
- 【答题卡识别】基于matlab GUI hough变换答题卡判定与成绩统计(带面板)【含Matlab源码 1017期】
- python tushare
- dedecms wap模板 html,dedecms医院网站wap模板(橙色)
- Android 自动点击工具,安卓自动点击器免费版
- 武汉大学计算机学院乒乓球室,武汉大学经济管理学院教职工乒乓球队在武汉大学师生乒乓球赛中获佳绩...
- python高级练习题:取消列表(比简单更难)【难度:4级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
- 计算机硬件4核是什么意思,8核,6核,4核和双核CPU是什么意思?
- 第二十九篇 -- 学习第五十六天打卡20190826
- 《 指数基金投资指南 》by 银行螺丝钉 - 笔记 - 1、2章
- VMware Workstations 打开.vmx 虚拟机无反应问题