zoukankan      html  css  js  c++  java
  • 2019-02-08 Python学习之Scrapy的简单了解

    今天遇到的问题和昨天差不多,一个Scrapy装了好久,anaconda卸了又装,pycharm卸了又装,环境变量配置一堆,依赖包下载一堆。查了一堆资料总算是搞好了。

    Scripy:
    先放个框架结构图(来自嵩天老师mooc)
    在这里插入图片描述
    Scrapy 爬虫的使用步骤

    1. 创建一个工程和spider模板
    2. 编写spider
    3. 编写Item Pipeline
    4. 优化配置策略

    两种风格的demospider写法:

    class DemoSpider(scrapy.Spider):
        name = 'demo'
        #allowed_domains = ['python123.io']
        start_urls = ['http://python123.io/ws/demo.html']	#启动时最开始的链接
    
        def parse(self, response):			#解析和操作的相关步骤
        	fname = response.url.split('/')[-1]		#文件名叫demo.html(切片,得到最后一个)
        	with open(fname,'wb+') as f:
        		f.write(response.body)
        	self.log = ('saved file %s.'% fname)
    
    
    
    class DemoSpider(scrapy.Spider):
    	name = "demo"
    
    	def start_requests(self):
    		urls = [
    				'http://python123.io/ws/demo.html'
    				]
    		for url in urls:
    			yield scrapy.Request(url=url,callback=self.parse)
    
    
    	def parse(self,response):
    		fname = response.url.split('/')[-1]
    		with open(fname,'wb') as f:
    			f.write(response.body)
    		self.log('Save file %s.' % fname)
    

    几种类:
    Request类
    class scrapy.http.Request()

    • Request对象生成一个HTTP请求
    • 由Spider生成,由Downloader执行

    属性和方法

    .url 对应请求的url地址
    .method 请求方法
    .headers 字典类型风格的请求头
    .body 请求内容主题
    .meta 用户添加的扩展信息
    .copy() 复制该响应

    Response类
    class scrapy.http.Request()

    • Response对象表示一个http响应
    • 由downloader生成,spider来处理

    属性和方法

    .urls Response对应的url地址
    .status HTTP状态码
    .headers Response对应的头部信息
    .body Response对应的内容信息
    .flags 一组标记
    .request 产生Response类型对应的Request对象
    .copy() 复制该响应

    Item类
    class scrapy.item.Item()

    • Item对象表示一个从HTML页面中提取的信息内容
    • 由Spider生成,由Item Pipeline进行处理
    • Item类似字典类型,可以按照字典类型进行相关操作

    Scrapy爬虫提取信息的方法
    BeautifulSoup
    lxml
    re
    CSS selector
    XPath selector

  • 相关阅读:
    sql2005 Reporting service 自定义报表调色版
    moss2007自定义网站栏不显示
    设置列表字段为主键
    分享"SharpZipLip使用代码"
    关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
    共享GridView DataGrid DataTable导出到Excel代码
    TD8.0管理员工具
    共享一个对Reflector 反编译支持中文的修正FileGenerator文件
    WPF的Binding学习笔记(一)
    C#学习☞WPF的一个有趣试验
  • 原文地址:https://www.cnblogs.com/roccoshi/p/13027094.html
Copyright © 2011-2022 走看看