什么是爬虫
爬虫的基本流程
什么是Request和Response
Request中包含什么
Response中包含什么
怎样保存数据
⒈什么是爬虫?⑴简单来说就是:请求网站并提取数据的自动化程序⑵操作:右键--->审查元素(如若想提取链接信息的话,就要从这些htm代码提取文字和链接信息,用解析库解析以上的信息,存成结构化的数据)⒉爬虫的基本流程⑴robots.txt:通过在所要爬取的母网站后面增加robots.txt,即可查出所有不可爬取的网站⑵发起请求:通过HTTP库向目标站点发起请求,即发送一个request,请求可以包含额外的headers等信息,等待服务器响应⑶获取响应内容:如果服务器能正常响应所要获取的页面内容,会得到一个Response,Response的内容便是,类型可能是HTML,JSON字符串,二进制数据等类型;⑷解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析;可能是JSON,可以直接转为JSON对象解析,可能是二进制数据,可以做保存或者进一步处理;⑸保存数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式文件⒊什么是Request和Response?⑴请求方式:主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。⑵请求URL:URL全程统一资源定位符,如一个网页文档、一张图片、一个视频都可以用URL唯一来确定⑶请求头:包含请求时的头部信息,如User-Agent、Host、Cookies等信息。⑷请求体:请求时额外携带的数据,如表单提交时的表单数据(Eg:fromdata)⒋Response中包含什么?⑴响应状态:有多重响应状态,如200代表成功、301是跳转、404为找不到网页、502服务器错误⑵响应头:如内容类型、内容长度、服务器信息、设置Cookie等等⑶响应体:最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等import requestsresponse = requests.get('http://www.baidu.com')print(response.text)#响应体print(response.headers)#响应头print(response.status_code)#响应状态码headers = {}#定义一个头部信息headers = {Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36}#次头部信息为电脑自身信息response1 = requests.get('http://www.baidu.com',headers = headers)#用新的headers请求百度print(response1.status_code)#使用响应状态码进行检验⒌能抓怎样的数据⑴网页文本(如HTML文档,JSON格式文本等)⑵图片(获取二进制文本文件,保存为图片格式)response2 = requests.get('https://www.baidu.com/img/bd_logo1.png')#抓取图片print(response2.content)#打印出来为二进制格式with open('F:/dd.png','wb')as f:#创建一个文件,格式为图片格式
⑶视频(同样为二进制文件,保存为音频格式即可,抓取方法如图片抓取方法)⒍解析方式⑴直接处理⑵Json解析⑶正则表达式⑷BeautifulSoup⑸PyQuery⑹XPath⒎怎样保存数据?⑴文本:纯文本、Json、Xml等⑵关系型数据库:如MySQL、Oracle、SQL Server等具有结构化表结构形式存储⑶非关系型数据库:MongoDB、Redis等Key-Value形式存储⑷二进制文件:如图片、视频、音频等等直接保存成特定格式即可