fmujie - 爬虫
type: channel
link: https://blog.fmujie.cn/index.php/tag/pc/
items: Python爬虫第一幕
items: 爬虫须知

Python爬虫第一幕
type: item
date: 2020-01-19T19:14:00+08:00
description: 什么是UrllibPython内置的HTTP请求库urllib.request 请求模块urllib.error 异常处理模块urllib.parse url解析模块url.robotparser robots.txt解析模块urllib相比于Python2的变化Python2import urllib2 response = urllib.urlopen('http://www.baidu.com')Python3import urllib.request response = urllib.request.urlopen('http://www.baidu.com')

爬虫须知
type: item
date: 2020-01-19T15:31:00+08:00
description: 爬虫基本流程发起请求通过HTTP库向目标站点发起请求，即发送一个Request，请求可以包含额外的headers等信息，等待服务器响应。获取响应内容如果服务器能正常响应，会得到一个Response，Response的内容便是所要获取的页面内容，类型可能有HTML、Json字符串、二进制数据（如图片视频）等类型。解析内容得到的内容可能时HTML，可以用正则表达式、网页解析库进行解析。可能是Json，可以直接转为Json对象解析，可能是二进制数据，可以做保存或者进一步处理。保存数据保存形式多样，可以存为文本也可以保存至数据库，或者保存特定格式的文件。Request和Response（1）浏览器就发送消息给该网址所在的服务器，这个过程叫做HTTP Request。（2）服务器收到浏览器发送的消息后，能够根据浏览器发送消息的内容做相应的处理，然后把消息回传给浏览器。这个过程叫做HTTP Response。（3）浏览器收到服务器的Response信息后，会对信息进行相应处理，然后渲染展示。Request请求方式主要有GET、POST两种类型，另外还有HEAD、PUT、DELETE、OPTIONS等。请求URLURL全称统一资源定位符，如果一个网页文档、一张图片、一个视频等都可以用URL唯一来确定。请求头包含请求时的头部信息，如User-Agent、Host、Cookies等信息。请求体请求时额外携带的数据如：表单提交时的表单数据。Response（1）响应状态有多种响应状态，如200代表成功、301跳转、404找不到页面、502服务器错误。（2）响应头如内容类型、内容长度、服务器信息、设置Cookie等等。（3）响应体最主要的部分，包含了请求资源的内容，如网页HTML、图片二进制数据等。能抓怎样的数据网页文本如HTML文档、Json格式文本等。图片获取到的是二进制文件，保存为图片格式。视频同为二进制文件，保存为视频格式即可。其他只要是能请求到的，都能获取。解析方式直接处理Json解析正则表达式BeautifulSoupPyQueryXPath如何解决JavaScript渲染问题？分析Ajax请求Selenium/WebDriverSplashPyV8、Ghost.py如何保存数据？文本纯文本、Json、Xml等。关系型数据库如MySQL、Oracle、SQL Server等具有结构化表结构形式储存。非关系型数据库如MongDB、Redis等key-value形式储存。二进制文件如图片、视频、音频等等直接保存成特定格式即可。