zoukankan      html  css  js  c++  java
  • Scrapy爬虫(九):scrapy的调试技巧

    Scrapy爬虫(九):scrapy的调试技巧

    本章将介绍scrapy的一些调试技巧。

    scrapy的调试

    在开发爬虫时调试工作是必要的且重要的,无论是开发前的准备工作,比如测试该网站在scrapy爬虫中是否可用;或者是下载时的伪装工作,比如为爬虫设置请求参数模拟浏览器;亦或是在解析下载下来的数据,比如如何使用xpath解析等等,不可能每次都运行程序爬虫来达到调试的目的,因为这样效率太低了。
    在开发时我所用到的方法通常是使用浏览器调试及scrapy命令工具调试。

    浏览器调试

    浏览器调试通常可以通过浏览器开发工具来获取请求参数,如显示源码、局部检查、firebug等。
    1、显示源码
    通常我们使用浏览器右键–>显示网页源码 功能,可以获取该url页的网页源码。

    2、代码检查

    代码检查可以精确查看当前选中元素的html标签

    3、查看请求参数
    打开代码检查后再network标签下,查看请求头Request Headers
    chrome浏览器

    火狐浏览器自带工具

    firebug工具

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate, sdch
    Accept-Language:zh-CN,zh;q=0.8
    Cookie:BAIDUID=B547D7C51C70A74212F12E2EC314B7B5:FG=1; BIDUPSID=B547D7C51C70A74212F12E2EC314B7B5; PSTM=1470221362; BDUSS=kRMZmIyUzNHdDhRVFdPeTRiRGQxek5UeDdPRTlBYk0wMk9SbUtPeTRnODByUzVZSVFBQUFBJCQAAAAAAAAAAAEAAAAWX1g4y87WvsTPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQgB1g0IAdYY; Hm_lvt_e9e114d958ea263de46e080563e254c4=1477032127,1477147817; MCITY=-52454%3A; LOCALGX=%u6210%u90FD%7C%36%36%39%33%7C%u6210%u90FD%7C%36%36%39%33; PSINO=3; H_PS_PSSID=1420_21093_21805_21553_21672_21678
    DNT:1
    Host:news.baidu.com
    Proxy-Connection:keep-alive
    Referer:http://news.baidu.com/
    Upgrade-Insecure-Requests:1
    User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36

    查看user-agent,chrome中也可以通过chrome://version/

    4、xpath调试

    现在的话scrapy主要使用xpath、css、正则表达式,但是还是以xpath为主,关于这部分的知识,可以google下,这里我不在重复造轮子。

    关于xpath的使用 点击
    chrome浏览器
    检查代码后可以在标签上右键–>Copy–>Copy XPath

    结果为

    //*[@id="content_right"]
    • 1

    火狐浏览器 可以使用firebug插件

    scrapy命令调试

    scrapy自带调试命令

    localhost:~ yancey$ scrapy
    Scrapy 1.2.0 - no active project
    
    Usage:
      scrapy <command> [options] [args]
    
    Available commands:
      bench         Run quick benchmark test
      commands      
      fetch         Fetch a URL using the Scrapy downloader
      genspider     Generate new spider using pre-defined templates
      runspider     Run a self-contained spider (without creating a project)
      settings      Get settings values
      shell         Interactive scraping console
      startproject  Create new project
      version       Print Scrapy version
      view          Open URL in browser, as seen by Scrapy
    
      [ more ]      More commands available when run from project directory
    
    Use "scrapy <command> -h" to see more info about a command
    scrapy startproject project
    创建project项目
    scrapy crawl project  
    进入project目录运行project爬虫
    scrapy version
    查看scrapy版本
    scrapy genspider testspider baidu.com
    创建一个spider name为testspider的爬虫,start_urls为http://www.baidu.com/的爬虫
    scrapy runspider testspider.py 
    在未创建项目的情况下,运行一个编写在Python文件中的testspider。
    scrapy fetch --nolog http://www.baidu.com/
    下载baidu并标准输出
    scrapy view http://www.baidu.com/ 
    下载百度页并在浏览器打开

    当然本处调试时,scrapy shell用的比较多
    以百度首页为例 https://www.baidu.com/

    scrapy shell https://www.baidu.com/
    • 1

    • 操作response,查看url,使用response.url,标准输出

    查看百度首页标题,xpath调试
    先检查代码获取xpath,为/html/head/title

    使用命令response.xpath(r'/html/head/title').extract()

    优化response.xpath(r'/html/head/title/text()').extract()
    结果为数组 ['百度一下,你就知道']
    可以这样得出文本response.xpath(r'/html/head/title/text()').extract()[0]
    或者"".join(response.xpath(r'/html/head/title/text()').extract())

    关于其他命令,读者朋友可以自己捣鼓下,本处不在多讲了,就我而言调试命令主要用于解析xpath的调试。

    集成开发环境(IDE)调试

    关于集成开发环境的调试大家应该都会使用,本处就不在赘述了。


  • 相关阅读:
    jupyter notebook 远程连接访问服务器
    spark py4j.protocol.Py4JNetworkError: An error occurred while trying to conn
    cudart64_101.dll not found解决方法
    windows tensorflow无法下载Fashion-mnist的解决办法
    dataframe apply函数多个结果拆分给多列
    tensorflow安装
    pandas DataFrame中agg聚合后重命名列标题
    操作系统-第五章-进程调度
    操作系统-第四章-多线程编程
    操作系统-第三章-进程
  • 原文地址:https://www.cnblogs.com/grimm/p/13884670.html
Copyright © 2011-2022 走看看