• PySpider简易教程


    一、安装

    1、上帝说要有Python

    python首先要保证有pip,注意 pip is already installed if you're using Python 2 >=2.7.9 or Python 3 >=3.4

    2、安装Pyspider

    然后打开命令行,pip install pyspider
    报错如下:

    error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat).
    Get it from http://aka.ms/vcpython27
    

    到对应地址下载Microsoft Visual C++ Compiler for Python 2.7
    继续报错:

    c:usersxxxappdatalocal	empxmlXPathInitzbzwjw.c(1) : fatal error C1
    083: Cannot open include file: 'libxml/xpath.h': No such file or directory
        ****************************************************************************
    *****
        Could not find function xmlCheckVersion in library libxml2. Is libxml2 insta
    lled?
        ****************************************************************************
    *****
        error: command 'C:\Users\xxx\AppData\Local\Programs\Common\Micros
    oft\Visual C++ for Python\9.0\VC\Bin\cl.exe' failed with exit status 2
    

    安装缺失的库,在cmd输入easy_install lxml,问题解决
    在cmd输入pyspider, 访问http://localhost:5000/

    3、安装phantomJs(可选)

    去官网下载phantomJs:http://phantomjs.org/download.html
    解压后把bin文件夹添加到系统的环境变量里,重新运行pyspider不会显示phantomJs不存在则安装成功。

    PySpider官方教程

    二、测试IMDB电影抓取爬虫

    1、创建脚本

    打开页面以后,按create,然后填写初始的爬取页面,会自动生成一个脚本 。

     
    创建脚本

    2、编辑脚本

    按照官网上的tutorial做了一下,实验一由于imdb页面更改的缘故更改了detail_page的应用

        @config(priority=2)
        def detail_page(self, response):
            return {
                "url": response.url,
                "title": response.doc('h1').text(),
                "rating": response.doc('span[itemprop="ratingValue"]').text(),
                "director": [x.text() for x in response.doc('[itemprop="director"] span').items()],
                "stars": [x.text() for x in response.doc('[itemprop="actors"] span').items()],
            }
    

    2、测试脚本,按左上角run,然后切换到下面的follow,可是看到每一步爬取的链接,点开那个...可以看详细的信息。

     
    测试运行脚本

    3、运行爬虫

    正常来说回到PySpider的dashboard,把任务状态改成running或者debug(没啥区别)打钩,然后点Run就行。右边那个active tasks可以看任务运行状态,results里是爬虫的结果。
    Tips:如果下载结果为csv格式,用文本编辑器打开中文显示正常,而用excel打开是乱码,记得把csv文件的编码改成utf16即可

     
    运行爬虫

    4、可能遇到的错误

    PySpider坑爹的地方在于删除以及重新运行爬虫非常麻烦,我不多说了,总之鼓捣了几下之后遇到了奇怪的错误:

    [W 160223 19:04:58 index:105] connect to scheduler rpc error: error(10061 onnection could be made because the target machine actively refused it')
    

    原因不明,可能是我删除project不当造成的,解决方法不明,有一个治标不治本的方法,新开一个cmd输入pyspider scheduler --no-xmlrpc,然后重启pyspider。这个方法的缺点是当Scheduler重启以后需要重新输入这个命令,否则问题会反复出现。当出现以下提示说明Scheduler运行正常(注意第二行说明载入项目成功):

    [I 160225 14:29:57 scheduler:453] loading projects
    [I 160225 14:29:57 scheduler:722] select imdb_test:_on_get_info data:,_on_get_in fo
    [I 160225 14:29:57 scheduler:394] in 5m: new:0,success:0,retry:0,failed:0
    

    有一个奇怪的点就是虽然把Python27Scripts加入了系统环境变量,但是以上命令有时候不管用,建议在执行pyspiderscheduler配置的时候都在Scripts目录下(这样任务相关的data也会保存在Scripts目录下)。



  • 相关阅读:
    log记录日志使用说明
    浅谈WebService开发三(动态调用WebService)转
    浅谈WebService开发二(同步与异步调用)转
    浅谈WebService开发(一)转
    Log4net使用(二)
    Log4net使用(一)
    创建DSN
    Oracle的substr函数简单用法(转)
    医院里的CR、DR、CT、磁共振、B超都是什么?
    lambda表达式(2)
  • 原文地址:https://www.cnblogs.com/zuichuyouren/p/11135565.html
Copyright © 2020-2023  润新知