美文网首页老孙说Python
Python爬虫第九天:Crawl Spider|日志|代理|模

Python爬虫第九天:Crawl Spider|日志|代理|模

作者: 老孙说IT | 来源:发表于2018-10-06 14:01 被阅读249次

    内容简述:         

        一:Crawl Spider         

        二:日志         

        三:Request和Response总结

        四:代理

        五:Scrapy实现模拟登录

    一:Crawl Spider

         CrawlSpider是一个类,父类是scrapy.Spider。

        CrawlSpider不仅有Spider的功能,还有自己独特功能

          特有功能:CrawlSpider可以定义规则,解析html时可根据链接规则提取出指定链接,然后再向这些链接发送请求。

          通常用于:如果有需要跟进链接的需求,爬取网页之后,需要提取链接再次爬取。

          如何提取链接?

           链接提取器,在这里就可以写规则提取指定链接

            scrapy.linkextractors.LinkExtractor(

               allow = (),             正则表达式           提取符合正则的链接

               deny = (),             正则表达式         不提取符合正则的链接[不用]

               allow_domains = (),         允许的域名[不用]

               deny_domains = (),          不允许的域名[不用]

               restrict_xpaths = (),           xpath,提取符合xpath规则的链接

               retrict_css = ()                   提取符合选择器规则的链接)

          【案例】:电影天堂-提取所有页码链接

                        scrapy shell http://www.dytt8.net/html/gndy/dyzz/index.html

                        from  scrapy.linkextractors  import   LinkExtractor

             正则用法

                        links1 = LinkExtractor(allow='list_23_\d+\.html')

                        links1.extract_links(response) 查看提取到的所有链接

             xpath用法

                       links2 =LinkExtractor(restrict_xpaths='//div[@class="x"]')

                     【注意】这里的xpath不带a

              css用法

                       links3 = LinkExtractor(restrict_css='.x')【注意】这里的选择器不带a

            【案例】:读书网-散文随笔

                      https://www.dushu.com/book/1163.html

                      scrapy startproject readbook1

                      scrapy genspider -t crawl readbook    "www.dushu.com"

                 CrawlSpider运行原理:

       【实操-spiders注意说明】

            rules =(Rule(LinkExtractor(allow=r'/book/1163_\d+\.html'), callback='parse_item',follow=False),)

           【注1】callback只能写函数名字符串, callback='parse_item'

           【注2】在基本的spider中,如果重新发送请求,那里的callback写的是                       callback=self.parse_item


    二:日志信息和日志等级

          级别:

            CRITICAL:严重错误

            ERROR:一般错误

            WARNING:警告

            INFO:一般信息

            DEBUG:调试信息

            默认的级别为DEBUG,会显示上面所有的信息

            在配置文件中 settings.py设置

            LOG_LEVEL:设置日志显示等级,此举动决定了显示哪些,不显示哪些

            LOG_FILE  :将屏幕显示的信息记录到文件中,屏幕不再显示

    三:Request和response总结

          Request(类)

            get请求

             scrapy.Request(url=url,callback=self.parse_item,meta={'item':item},headers=headers)

                        url:要请求的地址

                        callback:响应成功之后的回调函数

                        meta:参数传递

                        headers:定制头信息,一般不用

              response(对象)

                        response.text:    字符串格式文本

                        response.body:  二进制格式文本

                        response.url:      当前响应的url地址

                        response.status:状态码

                        response.xpath(): 通过xpath筛选数据

                        response.css():    通过CSS筛选数据

          post请求

          【温馨提示】如果直接发送post请求,start_urls和parse方法就用不到

                               因为重写了start_requests(self)这个方法,

          【案例】:百度翻译

           scrapy.FormRequest(url=url,headers=headers, callback=self.parse_item,formdata=data)

                url:要发送的post地址

                headers:定制头信息

                callback:回调函数

                formdata: post所携带的数据【字典】

    四:代理

           通过下载中间件来进行添加

          (1)settings.py中,打开一个选项

                   DOWNLOADER_MIDDLEWARES 配置选项

          (2)middlewares.py中找到以下方法写代码

                   def  process_request(self, request, spider):

                             request.meta['proxy'] ='https://113.68.202.99:8888'

                   return None

    五:Scrapy实现模拟登录

       【案例】人人网    www.renren.com

    相关文章

      网友评论

        本文标题:Python爬虫第九天:Crawl Spider|日志|代理|模

        本文链接:https://www.haomeiwen.com/subject/nzkhaftx.html