zoukankan      html  css  js  c++  java
  • ScrapySpider的使用

    设置控制台打印的Log等级

    # setings文件
    
    # 设置只打印warning以上等级的日志信息
    LOG_LEVEL = 'WARNING'
    

    在在爬虫主文件写爬取代码,使用scrapy.Request请求。

    2019-08-25_20-16-04

    # baiduSpider.py文件
    
    import scrapy
    from spiderDM.items import SpiderdmItem
    
    
    class BaiduspiderSpider(scrapy.Spider):
        name = 'baiduSpider'
        allowed_domains = ['www.baidu.com']
    
        # start_urls = ['http://www.baidu.com/']
    
        # 和start_urls功能相似,是程序开始执行的方法。
        def start_requests(self):
            url = "http://www.baidu.com"
    
            headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
            }
    
            cookies = {
                "cookie": "_zap=14ce0193-6056-4233-a292-697015b7845f"
            }
    
            item = {"data": "information"}
    
            yield scrapy.Request(
                url=url,  # 请求的URL
                method="GET",  # 请求的方式,默认GET
                headers=headers,  # 请求头携带信息
                meta=item,  # 需要携带给回调函数的数据
                dont_filter=False,  # 是否筛选这个URL,默认False
                callback=self.parse  # 设置回调函数(下一个执行的函数)
            )
    
        def parse(self, response):
            # 创建item对象
            item = SpiderdmItem()
    
            # 获取meta里的数据;注意:获取的是浅度拷贝(复制数据的引用地址),注意后面操作对值的覆盖。深度复制:deepcopy
            item["data"] = response.meta["data"]
            print(item["data"])
    
            # 发送数据给管道
            # yield item
    

    运行爬虫结果

    2019-08-25_20-18-17

    使用scrapy.FormRequest请求。

    # baiduSpider.py文件
    
    import scrapy
    from spiderDM.items import SpiderdmItem
    
    
    class BaiduspiderSpider(scrapy.Spider):
        name = 'baiduSpider'
        allowed_domains = ['www.baidu.com']
    
        # start_urls = ['http://www.baidu.com/']
    
        # 和start_urls功能相似,是程序开始执行的方法。
        def start_requests(self):
            url = "http://www.baidu.com"
    
            headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
            }
    
            cookies = {
                "cookie": "_zap=14ce0193-6056-4233-a292-697015b7845f"
            }
    
            item = {"data": "information"}
    
            yield scrapy.FormRequest(
                url=url,  # 请求的URL
                headers=headers,  # 请求头
                formdata=dict(  # 请求网页时发送的数据
                    userName="make",
                    passWord="make"
                ),
                meta=item, # 携带给回调函数的数据
                callback=self.parse,  # 回调函数
            )
    
        def parse(self, response):
            # 创建item对象
            item = SpiderdmItem()
    
            # 获取meta里的数据
            item["data"] = response.meta["data"]
            print(item["data"])
    
            # 发送数据给管道
            # yield item
    

    运行结果相同。

    两种请求方式的应用场景

    scrapy.Request:主要应用GET网页数据时应用。

    scrapy.FormRequest:主要应用发送POST来获取数据和登录时应用。

  • 相关阅读:
    ubuntu下eclipse连接mysql
    关于oracle 11g导出数据时 报 ORA 1455错误的处理
    SQL语句改动表名和字段名
    C++组合通信
    退出应用工具类
    ListView间隔设置颜色
    Android闪光灯操作
    Android设置对话框去除黑边
    android设置组件透明度
    git在windows命令行下使用
  • 原文地址:https://www.cnblogs.com/studyNotesSL/p/11409557.html
Copyright © 2011-2022 走看看