Scrapy
文章
注意
以后逐步将手写笔记改为网络端。(节约时间、便于调整,有利于复习)
Scrapy框架学习——命令行工具
全局命令<不需要要项目,在命令行中直接运行>: scrapy startproject myproject - 创建一个名为myproject的scrapy项目 scrapy genspider [-t template] <name> <domain> - 创建一个新的spider(-l 列出spider的模板,-d 查看模板的内容 -t 使用这个模板) scrapy -h - 查看所有可用的命令 scrapy crawl <spider> - 使用spider进行爬虫 scrapy check [l] <spider> - 运行contract检查 scrapy list - 列出所欲可能的spider scrapy edit <spider> - 使用设定的编辑器编辑spider scrapy fetch <url> - 使用scrapy下载器Downloader下载给定的URL,并将获取到的内容标准输出 scrapy view <url> - 用来查看spider获取到的页面,...
Scrapy框架学习——琐碎知识整理
scrapy引擎 调度器 Spiders 下载器 Item Pipeline itemloader用来装载,item用来容纳,itempipeline用来过滤。也负责了指明了存好数据的item的数据流动的方向。itemloader是活动在原始数据和item之间的桥梁。itempipeline是活动在item和具体存储数据的位置之间的桥梁。比如用来操纵数据库、用来写入文件,用来提供下一次爬虫的相关信息。 下载器中间件 由调度器具体指挥,能够根据引擎发送的request对象,封装真正的request请求,并且设置请求的响应参数。不同的下载器中间件,能够完成不同的任务。 Spider中间件 引擎和Spider之间的钩子。用来处理Spider发送给引擎的request和Item和引擎发送给Spider的response。有点像网络的分层,没一层都向发送数据中添加一点内容,每一层都从接受数据中获得一点内容。有很多中间件,可以在这里过滤掉一些错误。另外,如果错误能够越提前的发现,则越有利于提高效率。 扩展Extension和信号signal 框架提供了一个很好的扩展机制。在配置文件中声明,...
Scrapy框架学习——ItemLoaders
ItemLoader是为了将获取文本进行分解,装载到相应的ItemLoader当中。 具体方法: def parse(self, response): l = ItemLoader(item**=Product(),response=response) l.add_xpath(‘name’, ‘//div[@class=”product_name”]’)l.add_xpath(‘name’, ‘//div[@class=”product_title”]’)l.add_xpath(‘price’, ‘//p[@id=”price”]’) l.add_css(‘stock’, ‘p#stock]’)l.add_value(‘last_updated’, ‘today’) # you can also use literal valuesreturn l.**load_item() ItemLoader在每个字段中包含了一个输入处理器和一个输出处理器。 输入处理器收到...
Scrapy框架学习——Items使用
>准确的说,scrapy主要就有两部分可以编辑,一个使用来处理数据的scrapy.Items,另一个用来仓库 Item的操作包括创建、获取字段的值、设置字段的值、后去所欲的键、获取product列表、获取product字段、社赋值和浅复制、集成扩展item。 Item对象的操作 fields内置字段,是item生命中使用到的field对象的名字,是一个字典。
scrapy框架学习——Selector选择器
爬取网站最常见的任务是从HTML源代码中提取数据。常用的库有BeautifulSoup。lxml库,Xpath。 Selector 中Xpath和CSS的使用 标签是节点 ,可以有层级 属性使用@来调用 内容要用text()来调用 条件要在[ ]写明白,也可以是contains[] //表示获得所有的某一个标签 ./表示下一级的方法 可以使用正则表达式最原始的过滤。 response**.xpath(‘//a[contains(@href,“image”)]/text()’).**re(r’Name:\s*(.*)’)
scrapy框架学习——Spiders
Spider类定义了如何爬去某个网站,包括爬去的动作、分析某个网页。 这个流程再清晰一下 发送请求->返回网页->分析处理生成数据->保存。 对爬虫过程的描述: 初始的URL初始化Request,设置回调函数。下载完成,生成response,并作为参数传给该回调函数。start_requests()来获取start_urls. 在回调函数内分析返回的网页内容,返回Item对象,或者Request或者一个包括而止的可迭代的容器。放回的Response对象经过处理,调用callback函数。 在回调函数内可以使用选择器(Xpath解析器等任何解析器)来分析内容,并根据分析,生成数据item 最后,spider返回的item将被存到数据库中或者导入文件当中。 Spider crawl mysqpider -a category=electronics传递spider的参数,限定爬去网站的部分。 函数的调用流程 spider的构成: name 名字,作用域内唯一。 allowed_domains可选,包含了spider爬取的域名domain列表li...
scrapy视频学习
spider 的使用说明: 继承scrapy.spider name spider的名字 start_urls初始链接 request 发送请求并且捕获相应,通过回调函数parse处理response相应 request函数能够发送请求,request函数需要一个回调函数,来接受请求。默认的request函数调用了parse,但是在多次request中,需要设置不同的parse函数,来处理多次请求 python回调函数的意思就是在一个函数的某个地方通过一个函数指针,调用另外一个函数,使得函数跳转。因为python是脚本,所以,在没有返回值的python函数执行时,如果函数跳转到其他地方,并不会返回一个值到原来的地方。 轮换useragent的目的: 当你使用同一个浏览器的时候(同一个useragent)会因为过度浪费服务器资源而被禁掉。 scrapy的一些内置特性: scrapy内置的数据抽取其:css/xpath/re scrapy内置结果的输出:csv,xml,json 自动处理编码 有丰富的内置扩展 cookies session 客户端和服务器端的缓存...
Xpath学习 CSS选择器学习
XPath使用路径表达式来选取XML文档中的节点或者节点集合。节点是通过path或者步来选取的。 1. 通过已经有的表达式选取节点、元素、属性和内容 nodename 选取此节点的所有子节点 / 从根节点开始选取 // 从匹配选择的当前节点选择文档中的节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 2. 带有位于的路径表达式,使用[ ]来表示当前节点被选取的一些条件 /bookstor/book[price>35]/title 3. 通配符来选取未知的元素(一般也用python的re表达式) * 匹配任何元素的节点 @* 匹配带有任何属性节点(没有属性的节点不行) node() 匹配任何类型的接待你。 对于CSS来说,选择器与HTML和CSS相关。 .class intro 查找类别下的元素 #id #firstname id=*的所有用户 element p 选择所有的元素 element,element 并列选择 element element 父子选择 element>ele...












