python爬虫之基础内容

请求

Request:请求

请求方式:主要有GET和POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等

请求URL:资源定位符

请求头:请求时的头部信息,如User-Agert、Host、Cookies等信息

请求体:请求的额外携带的数据,如表单提交时的表单数据

 

响应

response:响应

响应状态:有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误等

响应头:如内容类型、内容长度、服务器信息、设置Cookie等等

响应体:最主要的内容,包含请求的源代码,由浏览器解析为页面

 

抓取数据类型

网页文本:如HTML文档、json格式文本等

图片:二进制文件,保存为图片格式

视频:二进制文件,保存为视频格式

其他:只要是能请求到的,都能获取

 

解析方式

直接处理、json解析、正则表达式、BeautifulSoup、PyQuery、XPath

 

为什么我抓到的数据和浏览器看到的是不一样的呢?因为有JavaScript渲染导致的。

怎么解决JavaScript渲染?

1.分析Ajax请求,返回json字符串

2.Selenium/WebDriver,驱动浏览器加载网页

3.Splash,模拟JavaScript渲染

4.PyV8、Ghost.py模拟加载

 

保存数据

文本:纯文本、json、xml等

关系型数据库:MySQL、oracle、sql server等

非关系型数据库:MongoDB、Redis等keyvalue形式存储

二进制文件:图片、视频等文件

 

常用库

urllib:提供了一系列用于操作URL的功能。

re:正则表达式

requests:基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库

selenium:针对web应用的开源测试框架,驱动各种浏览器

chromedriver:chrome浏览器

phantomjs:无界面浏览器

lxml:提供解析和生成xml的方式

pyquery:网页解析库

pymysql:mysql数据交互

pymongo:MongoDB数据交互

redis:redis数据交互

flask: web 框架,提供工具,库和技术来允许构建一个 web 应用程序

django:Web应用框架,后台管理

jupyter:网页端代码操作

 

ps:

python爬虫,刚开始主要用urllib库,接口比较繁琐,但也能实现基本功能。requests库基于urllib库,威力更强大,但对一些动态加载的网站,经常要先分析请求,再用requests模拟,比较麻烦。selenium库是python的一个第三方自动化测试库,虽然是测试库,却也非常适合用来写爬虫,可以直接模拟浏览器动作,而phantomJS是其子包webdriver下面的一个浏览器。phantomJS本身是一个无头浏览器(headless browser),也称无界面浏览器。可以在通过官网下载运行phantomjs.exe,简单几行代码也能访问网页,爬取数据。

posted @ 2018-05-29 11:54  才华充电中  阅读(210)  评论(0编辑  收藏  举报