http://www.gooseeker.com/doc/thread-2072-1-1.html按教程案例完整做下来后,报错了,截图如下: 豆瓣爬取失败.jpg

lxml,selenium,phantomJS都已经安装,不知道是哪里的问题啊?对于gooseeker.py和douban.py的代码如下以供查看:
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. # 模块名: gooseeker
  4. # 类名: GsExtractor
  5. # Version: 2.1
  6. # 说明: html内容提取器
  7. # 功能: 使用xslt作为模板,快速提取HTML DOM中的内容。
  8. # released by 集搜客(http://www.gooseeker.com) on May 18, 2016
  9. # github: https://github.com/FullerHua/jisou/core/gooseeker.py

  10. import time
  11. from urllib import request
  12. from urllib.parse import quote
  13. from lxml import etree

  14. class GsExtractor(object):
  15.     def _init_(self):
  16.         self.xslt = ""
  17.     # 从文件读取xslt
  18.     def setXsltFromFile(self , xsltFilePath):
  19.         file = open(xsltFilePath , 'r' , encoding='UTF-8')
  20.         try:
  21.             self.xslt = file.read()
  22.         finally:
  23.             file.close()
  24.     # 从字符串获得xslt
  25.     def setXsltFromMem(self , xsltStr):
  26.         self.xslt = xsltStr
  27.     # 通过GooSeeker API接口获得xslt
  28.     def setXsltFromAPI(self , APIKey , theme, middle=None, bname=None):
  29.         apiurl = "http://www.gooseeker.com/api/getextractor?key="+ APIKey +"&theme="+quote(theme)
  30.         if (middle):
  31.             apiurl = apiurl + "&middle="+quote(middle)
  32.         if (bname):
  33.             apiurl = apiurl + "&bname="+quote(bname)
  34.         apiconn = request.urlopen(apiurl)
  35.         self.xslt = apiconn.read()
  36.     # 返回当前xslt
  37.     def getXslt(self):
  38.         return self.xslt
  39.     # 提取方法,入参是一个HTML DOM对象,返回是提取结果
  40.     def extract(self , html):
  41.         xslt_root = etree.XML(self.xslt)
  42.         transform = etree.XSLT(xslt_root)
  43.         result_tree = transform(html)
  44.         return result_tree
  45.     # 提取方法,入参是html源码,返回是提取结果
  46.     def extractHTML(self , html):
  47.         doc = etree.HTML(html)
  48.         return self.extract(doc)
复制代码
  1. # _*_coding:utf-8_*_
  2. # douban.py
  3. # 爬取豆瓣小组讨论话题

  4. from urllib import request
  5. from lxml import etree
  6. from gooseeker import GsExtractor
  7. from selenium import webdriver

  8. class PhantomSpider:
  9.     def getContent(self, url):
  10.         browser = webdriver.PhantomJS(executable_path='H:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe')
  11.         browser.get(url)
  12.         time.sleep(3)
  13.         html = browser.execute_script("return document.documentElement.outerHTML")
  14.         output = etree.HTML(html)
  15.         return output

  16.     def saveContent(self, filepath, content):
  17.         file_obj = open(filepath, 'w', encoding='UTF-8')
  18.         file_obj.write(content)
  19.         file_obj.close()

  20. doubanExtra = GsExtractor()   
  21. # 下面这句调用gooseeker的api来设置xslt抓取规则
  22. # 第一个参数是app key,请到GooSeeker会员中心申请
  23. # 第二个参数是规则名,是通过GooSeeker的图形化工具: 谋数台MS 来生成的
  24. doubanExtra.setXsltFromAPI("ffd5273e213036d812ea298922e2627b" , "豆瓣小组讨论话题")  

  25. url = "https://www.douban.com/group/haixiuzu/discussion?start="
  26. totalpages = 5
  27. doubanSpider = PhantomSpider()
  28. print("爬取开始")

  29. for pagenumber in range(1 , totalpages):
  30.     currenturl = url + str((pagenumber-1)*25)
  31.     print("正在爬取", currenturl)
  32.     content = doubanSpider.getContent(currenturl)
  33.     outputxml = doubanExtra.extract(content)
  34.     outputfile = "result" + str(pagenumber) +".xml"
  35.     doubanSpider.saveContent(outputfile , str(outputxml))

  36. print("爬取结束")
复制代码

举报 使用道具
| 回复

共 3 个关于本帖的回复 最后回复于 2017-8-3 21:00

gz51837844 管理员 发表于 2017-8-3 11:24:47 | 显示全部楼层
提示的错误信息里有: NameError: name 'time' is not defined
你在douban.py第4行的位置加一句:
  1. import time
复制代码
举报 使用道具
mingdongtianxia 中级会员 发表于 2017-8-3 20:09:16 | 显示全部楼层
gz51837844 发表于 2017-8-3 11:24
提示的错误信息里有: NameError: name 'time' is not defined
你在douban.py第4行的位置加一句:
...

非常感谢,成功了。不过我还有问题,就是我看这个案例能进行翻页爬取数据是因为它有独立网址,从而用循环进行了构造网址来达到翻页爬取的目的,那么问题来了:
1.如果翻页没有独立网址,或者说网址不变,此刻要进行翻页该怎么办呢?
2.既然能通过api等方式导入爬取数据的数据规则xslt,那么同样能否导入进行翻页的线索规则呢?这样进行翻页也很方便了呀。
举报 使用道具
gz51837844 管理员 发表于 2017-8-3 21:00:22 | 显示全部楼层
翻页功能没有实现.
目前其它的开发测试任务很重, python版没有排入时间表
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-3-29 20:33