美文网首页
pyspider 支持 js 时 fetch_type='js'

pyspider 支持 js 时 fetch_type='js'

作者: blaze冰叔 | 来源:发表于2019-08-28 14:15 被阅读0次

    在学习使用pyspider时遇到一个问题,当页面中有js处理时,需要在self.crawl 中加入fetch_type='js'参数 如下

        @every(minutes=24 * 60)
        def on_start(self):
            self.crawl('http://travel.qunar.com/travelbook/list.htm', callback=self.index_page)
        
        @config(age=10 * 24 * 60 * 60)
        def index_page(self, response):
            for each in response.doc('li > .tit > a').items():
                self.crawl(each.attr.href, callback=self.detail_page, fetch_type="js")
            next=response.doc('.next').attr.href
            self.crawl(next,callback=self.index_page)
        
        
        @config(priority=2)
        def detail_page(self, response):
            return {
                "url": response.url,
                "title": response.doc('title').text(),
            }
    

    但是呢,遇到问题了,加了fetch_type='js'之后,该请求就报错

    [E 190828 13:41:01 base_handler:203] 501 Server Error

    判断应该是js处理的库 phantomjs的问题,发现本地没有安装phantomjs,
    1 下载phantomjs,目前phantomjs封档暂停维护了,所以最新的版本也就到2.1.1
    2 下载好的文件夹随便放在那个平常不会动的目录下即可
    3 配置.bash_profile
    vim .bash_profile
    添加export PATH
    export PATH=/{你自己找的路径}/phantomjs-2.1.1-macos/bin:$PATH
    如下

    image.png
    接下来就是配置生效操作
    source .bash_profile
    然后就是查看操作
    echo $PATH
    确认配置信息已添加即可

    接下来就是重要一步,重启你的pyspider
    然后,就可以正常使用了

    相关文章

      网友评论

          本文标题:pyspider 支持 js 时 fetch_type='js'

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