美文网首页老孙说Python
Python爬虫第八天:ScrapyShell|yield it

Python爬虫第八天:ScrapyShell|yield it

作者: 老孙说IT | 来源:发表于2018-10-06 13:57 被阅读215次

内容简述:     

    一:Scrapy Shell     

    二:yield item和请求     

    三:请求传参-高级请求

一:Scrapy Shell

        运行在终端的工具,用来调试scrapy。可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式。

        简单使用—糗事百科

        scrapy shell  “http://www.baidu.com/

      【温馨提示】:当咱们有时加载https请求时,有可能会报错

        问题描述:[<twisted.python.failure.Failure twisted.internet.error.ConnectionDone:                                        Connection was closed cleanly.>]

        解决方案:

                第一步: scrapy shell -s USER_AGENT='Mozilla/5.0'

                第二步:fetch(‘url’)

        示例参考: fetch("https://www.qiushibaike.com")

 A-response对象

      属性

          text:字符串格式的html   body:二进制格式的html     encoding:响应编码

          url:所请求的url              status:响应状态码              headers:响应头

      方法:

         xpath():据xpath获取所有selector对象(scrapy内部封装的一个类的对象)的列表

                例:获取糗事百科用户名

                name_list=response.xpath('//div[@class="author clearfix"]//img/@alt')

                print(len(name_list))               print(name_list.extract())

                print(name_list.extract()[0])    print(name_list.extract_first())     

          css():获取符合要求的所有selector对象的列表

                 获取内容

                      name_list=response.css('#content-left a > h2::text')接着extract()

                 获取属性

                     css_list=response.css('#content-left a > img::attr(src)')接着extract()

                  一般不使用,因为中间scrapy会将这个选择器给翻译成xpath再去解析

         selector对象

                xpath('./'):从当前节点向下开始查找

                css():和上面的response的方式一样

                extract():将对象转化为unicode字符串

                extract_first():如果xpath获取不到内容extract_first()返回None,extract()报错

   B-Item对象

              类字典对象,用法和字典一样,将这个对象转化为字典 stu = dict(stu)

二: yield item和请求

        校花网  http://www.xiaohuar.com/hua/

        管道的后期处理:数据的存储|下载

      【温馨提示】写好pipeline的时候,需要在settings文件中打开一个配置

        ITEM_PIPELINES = { 'huaproject.pipelines.HuaprojectPipeline':300,  }

        第一个:处理的管道

        第二个:优先级,越小优先级越高(0-1000)


        多页面抓取及图片批量下载

        url规律

               第一页list-1-0.html

               第二页list-1-1.html

               第n页list-1-(n-1).html

三:请求传参【高级请求】

             如果一个页面不能将一个item的所有信息全部拿到,需要再次发送请求,再次解析才能将item的所有信息拿到。这种情况怎么办?

          电影天堂  http://www.ygdy8.net/html/gndy/dyzz/index.html

相关文章

网友评论

    本文标题:Python爬虫第八天:ScrapyShell|yield it

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