一 :url相关
1:url概念:(简单的理解)URL是(UniformResourceLocator,统一资源定位符)的缩写,它是WWW的统一资源定位标志,就是指网络地址。 2:url组成 : 协议部分 ,一般是是http协议,https协议,这两种很常见。 3 : 服务器的主机地址,可以是域名,主机名,ip地址,通俗讲,就是一种标识。 4 :端口 : 这是服务器设定的,url里面可以不包括端口的,因为一般是服务器默认的,所以用户在访问url链接时可以不用指明端口号的。 5 :路径,当然是访问资源所在的目录了。 6: 其它的一些参数 : 这其实可以和路径合在一起的。
二 : 源码参数相关
1 : network: 用来查看网络请求 我们来看图 :
我们可以得到请求方法,这里包括get()方法和post()方法 我们点开其中一个Name,我们来看图 :
这里可以得到 请求的URL链接;请求的方法;状态码200,这里的200代表访问成功,在爬虫程序中,如果获取的状态码不是200,则访问失败;远程地址;当你发起一个http请求,请求头中的referrer字段就说明了你是从哪个页面发起该请求的;Referrer-Policy的作用就是为了控制请求头中referrer的内容.我们来看 Request URL: https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js?1597541613398 Request Method: GET Status Code: 200 Remote Address: 45.116.153.103:443 Referrer Policy: no-referrer-when-downgrade
我们来看响应的头部Response Headers : accept-ranges: bytes access-control-allow-origin: * age: 23048929 ali-swift-global-savetime: 1543387296 cache-control: max-age=31536000 content-encoding: gzip content-length: 32828 content-md5: ODdx7xaSv8w/K2kXyphXeA== content-type: application/x-javascript date: Sat, 23 Nov 2019 07:04:44 GMT eagleid: 2d74991c15975416132412717e etag: “383771EF1692BFCC3F2B6917CA985778” expires: Thu, 28 Jun 2018 11:27:53 GMT last-modified: Thu, 21 Jun 2018 06:51:02 GMT server: Tengine status: 200 timing-allow-origin: * vary: Accept-Encoding via: cache44.l2nu20-3[0,200-0,H], cache44.l2nu20-3[0,0], cache5.cn1517[0,200-0,H], cache8.cn1517[1,0] x-cache: HIT TCP_MEM_HIT dirn:2:318540869 x-oss-hash-crc64ecma: 2216235094704600209 x-oss-object-type: Normal x-oss-request-id: 5DD8DA0CEA872639388535FC x-oss-server-time: 8 x-oss-storage-class: Standard x-swift-cachetime: 31104000 x-swift-savetime: Fri, 14 Feb 2020 13:31:49 GMT 这里有好多信息, 我们来简单介绍几个 accept : 是允许接受的参数,如accept-ranges : bytes 接受字节 content -encoding : gzip 这是文本的编码 content-length : 32828 这是长度 date : Sat,23… 这是响应的时间记录 还有其他的一些信息,这里不一一介绍了
我们来看请求头 :authority: csdnimg.cn :method: GET :path: /public/common/libs/jquery/jquery-1.9.1.min.js?1597541613398 :scheme: https accept: / accept-encoding: gzip, deflate, br accept-language: zh-CN,zh;q=0.9 referer: https://editor.csdn.net/md?articleId=108031780 sec-fetch-dest: script sec-fetch-mode: no-cors sec-fetch-site: cross-site user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 注意 :这里的一些信息是可以反应我们用的requests()方法的,我们的get()或者post()方法可以在这里看到;另外这里记录了你访问网站的方式,就是看是浏览器还是爬虫,如果是爬虫,网站可以选择拒绝访问。所以我们可以更改请求头user-agent,我们可以模拟一个浏览器。这里还有其他的信息,是相关的一些说明。 query string parameter 查询字符串参数,这个不是对我们爬虫很重要,我们个人不需要太多关注。
二 : 强大的Scrapy框架 :
1:Scrapy框架介绍: 这个框架依赖的库时是较多的,采用异步框架,实现高效率的网络采集。可以堪称目前最强大的框架,没有之一,哈哈哈,男神框架。 2: 运行原理 : 我为大家放图,图形可以很好的描述相关的原理。来看图。
已上图是他的工作原理,你可以把他理解为一个系统。我们这样描述原理,采用对话方式。来看。 1 引擎:Hi!Spider, 你要处理哪一个网站? 2 Spider:老大要我处理xxxx.com。 3 引擎:你把第一个需要处理的URL给我吧。 4 Spider:给你,第一个URL是xxxxxxx.com。 5 引擎:Hi!调度器,我这有request请求你帮我排序入队一下。 6 调度器:好的,正在处理你等一下。 7 引擎:Hi!调度器,把你处理好的request请求给我。 8 调度器:给你,这是我处理好的request 9 引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求 10 下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载) 11 引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的) 12 Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。 13 引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。 14 管道调度器:好的,现在就做! 3:安装方式 : 首先,升级你的pip,版本太低不行。 控制台输入命令, pip install --upgrade pip 然后:采用pip安装Scrapy框架,控制台输入pip install Scrapy 注意:这里如果出现错误–>VC 14.0 Twisted问题,则需要安装Twisted.介意离线安装。不过我没遇到这种问题,幸运的一批。 4 操作 : 第一,新建项目 注意,你要明确你要建立项目的路径 控制台输入 scrapy startproject 项目名 建立项目后,我们进去浏览 scrapy.cfg: 项目的配置文件。 mySpider/: 项目的Python模块,将会从这里引用代码。 mySpider/items.py: 项目的目标文件。 mySpider/pipelines.py: 项目的管道文件。 mySpider/settings.py: 项目的设置文件。 mySpider/spiders/: 存储爬虫代码目录。 第二,创建爬虫 在项目的Spider路径下建立爬虫,一定要找对哦。 控制台输入命令 : crapy genspider 爬虫名" 爬取的域名 我现在来给大家看效果,慢慢进入看
这是我创建的一些目录 注意 __pycache__这个文件暂时不会用到,但不要删除,原因我以后会讲,我们处理爬虫时,不对他操作。 我们打开这个创建的爬虫的文件
import scrapy
class JgdabcSpider(scrapy.Spider): name = ‘jgdabc’ allowed_domains = [‘itcast.cn’] start_urls = [‘https://www.itcast.cn/’]
代码语言:javascript复制def parse(self, response):
filename = "spider.text"
open(filename,"wb").write(response.body)
里面的代码如上 name代表你的爬虫名; allow_domains代表你允许爬取的域名,其实这个可以注释掉 start_urls代表了网址 def parse(self,response) 代表你要进行的一些处理。这里我将爬取的东西写入了文件"spider.text" 当然你一可以进行其他的操作。其实我们可以处理管道文件,这里我们先不讲解。 5 : 执行程序: 请进入我们的根目录 然后在控制台输入 :scrapy crawl 爬虫名即可
欢迎猿友们指点评论 注: 相关的请尊重csdn协议,违权必究。 博主 :jgdabc, 博主链接点击这里