美文网首页
Python爬虫第九天:crawl spider|日志|代理|数

Python爬虫第九天:crawl spider|日志|代理|数

作者: Davis_hang | 来源:发表于2018-10-17 11:24 被阅读0次

    内容简述:         

        一:Crawl Spider         

        二:日志         

        三:Request和Response总结

        四:代理

        五:Scrapy实现模拟登录

        六:数据存储到数据库mysql中

    一: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 shellhttp://www.dytt8.net/html/gndy/dyzz/index.html

                        from scrapy.linkextractorsimport 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 readbookwww.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():筛选想要的数据

            response.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中找到以下方法写代码

           defprocess_request(self, request, spider):

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

              return None

    五:scrapy实现模拟登录

       【案例】豆瓣-douban

    https://accounts.douban.com/login

          【温馨提示】

                Douban基于安全考虑-比较靠谱的网站,登录时需携带Cookie。

    所以需要首先向登录地址发送get请求,然后再向post地址发送post请求,因为中间要携带cookie,才能登录成功

                请求模式【get==>post==>get】

    六:存储到mysql中

       【案例】-读书项目

               from scrapy.utils.project importget_project_settings

               settings = get_project_settings()

    相关文章

      网友评论

          本文标题:Python爬虫第九天:crawl spider|日志|代理|数

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