1.网络爬虫的原理
Step1:网络爬虫通过本地或者远程DNS,获取域名对应的IP地址。
Step2:根据获取的IP地址于访问内容封装HTTP请求(网络爬虫可以定制HTTP请求)。
Step3:网络爬虫发出HTTP请求。
Step4:服务器接受信息,根据HTTP内容寻找web资源。
Step5:服务器创建HTTP响应并封装。
Step6:服务器将HTTP响应返回到爬虫。
Step7:爬虫解析并保存。
爬取网站===>抽取信息====>储存信息
1请解释URL、URI、URN
答:URI是统一资源标志符,URL是统一资源定位符,URL是URI的子集,也就是说每个URL都是URI,但并非每个URI都是URL。URN是统一资源名称。
2请理解HHTP和HTTPS
答:HTTP是超文本传输协议,其作用是把超文本数据从网络传输到本地浏览器,能够保证高效而准确地传输超文本文档;HTTPS是以安全为目标的HTTP通道,简单讲就是HTTP的安全版,即在HTTP下加入SSL层。HTTP和HTTPS协议都属于计算机网络中的应用层协议,其下层是基于TCP协议实现的,TCP协议属于计算机网络中的传输层协议。HTTPS已然是大势所趋。
3请求的英文名为Request,由客户端发往服务器,分为四部分内容,分别是什么。
答:请求头:Request Headers;请求体:Request Body;请求方法:Request Method;请求连接:Request URL。
4POST和GET请求的区别
答:GET请求中的参数包含在URL里面,数据可以在URL中看到。GET请求提交的数据最多只有1024字节,POST方式则没有限制。POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
5响应状态码
答:404代表页面未找到;403禁止访问,服务器拒绝此请求;500代表服务器内部发生错误。
6关于爬虫的理解
答:
保存数据:提取信息后,我们一般会讲提取到的数据保存到某处以便后续使用。
提取信息:获取网页的源代码后,接下来就是分析源代码,从中提取我们想要的数据。
简单点讲,爬虫就是获取网页并获取和保存信息的自动化程序。
获取页面:爬虫的工作首先是获取网页,就是获取网页的源代码。
8Urllib
答:
1.urllib库包含4个模块:request,error,parse,robotparser;利用urllib可以实现HTTP请求的发送,而且不需要关心HTTP协议本身甚至更底层的实现。
2.输入:请求的url、请求头、请求体等信息。
输出:响应状态码、响应头、响应体等。
3.使用urllib库的request模块,可以方便地发送请求并得到响应。
4.Error异常处理模块
5.Parse工具模块,提供url的处理方法
6.利用urllib库的robotparser模块,主要用于识别网站的robots.txt文件。可以分析网站的Robots协议。
9爬取网页数据的库有什么
答:requsets库,urllib库
10Python解析网页库有什么
答:lxml;pyquery;parsel;Beautiful Soup
11理解正确的是
答:可以使用正则表达式提取页面信息。XPath的全称是XML Path Language,即XML路径语言,用来在XML文档中查找信息,也同样适用于HTML文档的搜索。Beautiful Soup是Python的一个HTML或XML的解析库,我们用它可以方便地从网页中提取数据。
12关于储存形式的理解
答:MongoDB和Redis是非关系型数据库。使用非关系型数据库存放网页爬取数据更简单和高效。最简单的一种是将数据直接保存为文本文件,如TXT、JSON、CSV等。数据也可以保存到搜索引擎(如Elasticsearch)中。
13在MongoDB中,连接test数据库,并指定movie数据集。
答:
import pymongo
client=pymongo.MongoClient('mongodb://localhost:27017/')
db=client['test'] collection=db.movie;
import pymongo
client=pymongo.MongoClient(host='localhost', port=27017)
db=client['test'] collection=db.movie;
import pymongo
client=pymongo.MongoClient(host='localhost', port=27017)
db=client.test collection=db.movie;
import pymongo
client=pymongo.MongoClient(host='localhost', port=27017)
db=client.test collection=db['movie']
14关于AJAX说法正确的是
答:Ajax有其特殊的请求类型,叫作xhr.
Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML.
从发送Ajax请求到网页更新的这个过程可以简单分为以下3步:发送请求、解析内容、渲染网页。
Ajax不是一门编程语言,而是利用JavaScript在保证页面不被刷新、页面链接不改变的情况下与服务器交换数据并更新部分网页内容的技术。
15request和urllib库,可以爬取哪些页面
答:AJAX页面,并且不带加密参数;HTML页面
16可以模拟浏览器运行的库有什么
答:Pyppetter库;Splash库;Selenium库 Playwright等
(模拟浏览器运行:不用管网页内部JavaScript使用的算法也不用管网页后台ajax接口的参数)
17页面是用AJAX实现的并且带有加密参数的,可以采取什么库爬取
答:Selenium库;Pyppeteer库
18解释Scrapy框架
答:Spiders:中文可以称为蜘蛛,Spider是一个复数统称,其可以对应多个Spider,每个Spider里面定义了站点的爬取逻辑和页面的解析规则,它主要负责解析响应并生成Item和新的请求然后发给Engine进行处理。
Item Pipelines:中文可以称为项目管道