社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

运用Python编写爬虫代码:爬取数据

Python学习交流 • 5 年前 • 912 次点击  

一、前言

对于数据分析师来说,获取数据是工作的第一步,如果无法获取数据,后面的工作也无从谈起,而随着互联网时代的发展,信息爆炸,海量的数据(包括文本、数字、视频)充斥于网络,如何从海量的数据中获取有效的信息,越来越成为一门热门的技术-数据爬虫。为了了解爬虫是如何运作的,我们首先需要了解网络运行机制、爬虫机制。

1.1 互联网是什么

简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前。

1.2 爬虫是什么

如果把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用;

二、爬虫的基本流程

用户获取网络数据的方式:

方式1:浏览器提交请求-->下载网页代码-->解析成页面

方式2:模拟浏览器发送请求(获取网页代码)-->提取有用的数据-->存放于数据库或文件中

普通上网用户通过方式1得到查询页面结果,而爬虫主要是通过方式2获取数据的;

2.1 发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等 

Request模块缺陷:不能执行JS\CSS 代码

2.2 获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

2.3 解析内容

解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

2.4 保存数据

数据库(MySQL,Mongdb,Redis)文件

三、http协议 请求与响应

Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)

Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

普通上网用户在浏览器接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。

四、request 请求

4.1 请求方式

常见的请求方式:GET / POST

4.2 请求的URL

URL全球统一资源定位符,用来定义互联网上一个唯一的资源。例如:一张图片、一个文件、一段视频都可以用url唯一确定。

URL编码:https://www.baidu.com/s?wd=图片(图片会被编码)

网页的加载过程是:加载一个网页,通常都是先加载document文档,

在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求

4.3 请求头

User-agent:请求头中没有user-agent客户端配置,服务端可能将你当做非法用户(host);cookies:cookie用来保存登录信息

注意: 一般做爬虫都会加上请求头


请求头需要注意的参数:

(1)Referrer:访问源至哪里来

(2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)

(3)cookie:请求头注意携带

4.4 请求体

请求体:如果是get方式,请求体没有内容(get请求的请求体放在url后面参数中,直接能看到)                  如果是post方式,请求体是format data

注意:1 登录窗口,文件上传等,信息都会被附加到请求体内 

        2 登录,输入错误的用户名密码,然后提交,就可以看到post,

        正确登录后页面通常会跳转,无法捕捉到post.

五、Response 响应

5.1 响应状态码

200:代表成功

301:代表跳转

404:文件不存在

403:无权限访问

502:服务器错误

5.2 响应头

响应头需要注意的参数:

(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来

(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面

5.3 网页源代码

JSO数据、如网页html,图片、二进制数据等 

六、总结

6.1 总结爬虫流程

 爬取-->解析-->存储

6.2 爬虫所需工具

请求库:requests,selenium
解析库:正则,beautifulsoup,pyquery
存储库:文件,MySQL,Mongodb,Redis

注意selenium库:驱动浏览器解析渲染CSS和JS,有性能劣势,有用没用的网页都会加载

后面会给大家代码详细讲解,如何用爬虫爬取简单网站数据,耐心等待更新。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/y9t20CpIjT
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/22776
 
912 次点击