一 :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/’]
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,
博主链接点击这里
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试