举报 使用道具
| 回复

共 8 个关于本帖的回复 最后回复于 2017-7-28 19:42

gz51837844 管理员 发表于 2017-7-27 22:58:02 | 显示全部楼层
你是在什么环境下运行的? 怎么报encoding problem: utf8_
举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 11:13:48 | 显示全部楼层
本帖最后由 mingdongtianxia 于 2017-7-28 11:18 编辑

愁死了,怎么弄啊?
举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 11:17:07 | 显示全部楼层
gz51837844 发表于 2017-7-27 22:58
你是在什么环境下运行的? 怎么报encoding problem: utf8_

系统是Windows 7 旗舰版64位系统,我是按http://www.gooseeker.com/doc/thread-2072-1-1.html这个教程一步一步完整做下来然后就报错了,lxml,selenium和PhantomJS都安装了并且安装成功,只是按教程lxml应该安装对应windows下python3.5的安装文件为 lxml-3.6.0-cp35-cp35m-win32.whl,可是官网没有找到,我只好安装的lxml-3.8.0-cp35-cp35m-win32.whl这个版本的,不影响吧应该?
举报 使用道具
ippfon 版主 发表于 2017-7-28 11:39:10 | 显示全部楼层
mingdongtianxia 发表于 2017-7-28 11:17
系统是Windows 7 旗舰版64位系统,我是按http://www.gooseeker.com/doc/thread-2072-1-1.html这个教程一 ...

尝试下面的步骤看看
1. 检查一下py文件的编码格式
2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上了
3. 贴一下代码,检查一下代码之间是否有空格问题

举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 12:36:39 | 显示全部楼层
本帖最后由 mingdongtianxia 于 2017-7-28 12:39 编辑
ippfon 发表于 2017-7-28 11:39
尝试下面的步骤看看
1. 检查一下py文件的编码格式
2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上 ...

https://github.com/FullerHua/gooseeker我从这个网站找的fuller大神的GitHub的下载包,然后按http://www.gooseeker.com/doc/thread-2072-1-1.html这个网址的教程对他的文件做了必要的修改,然后就报错了,一共两个.py文件,它们的具体的代码如下:
  1. 1.gooseeker.py
  2. #!/usr/bin/python
  3. # -*- coding: utf-8 -*-
  4. # 模块名: gooseeker
  5. # 类名: GsExtractor
  6. # Version: 2.1
  7. # 说明: html内容提取器
  8. # 功能: 使用xslt作为模板,快速提取HTML DOM中的内容。
  9. # released by 集搜客(http://www.gooseeker.com) on May 18, 2016
  10. # github: https://github.com/FullerHua/jisou/core/gooseeker.py

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

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

复制代码


crawler.jpg
gooseeker-master.jpg
两个.py文件.jpg
举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 12:42:30 | 显示全部楼层
ippfon 发表于 2017-7-28 11:39
尝试下面的步骤看看
1. 检查一下py文件的编码格式
2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上 ...
  1. 2.douban.py
  2. # _*_coding:utf8_*_
  3. # douban.py
  4. # 爬取豆瓣小组讨论话题

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

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

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

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

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

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

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


举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 15:49:39 | 显示全部楼层
gz51837844 发表于 2017-7-27 22:58
你是在什么环境下运行的? 怎么报encoding problem: utf8_

@gz51837844
举报 使用道具
mingdongtianxia 中级会员 发表于 2017-7-28 19:42:17 | 显示全部楼层
ippfon 发表于 2017-7-28 11:39
尝试下面的步骤看看
1. 检查一下py文件的编码格式
2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上 ...

1. 检查一下py文件的编码格式
2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上了
3. 贴一下代码,检查一下代码之间是否有空格问题


上面的你给我说错了,经过大量的可以说血的教训,对于你说的“2. 第一行 # _*_coding:utf8_*_ 这句注释代码是否加上了”是不是应该改为
2. 第一行 # _*_coding:utf-8_*_ 这句注释代码是否加上了”,utf与8之间少了一个“-”,哎,哭死,救命啊,我的天,我想对于我浪费的宝贵的精力和时间来说,
以后这种尝试探索还是交给大神吧,Python开源项目只有第一篇first.py按教程下来能正常运行跑数据外其它全告失败,对于我等编程小白来说,简直就是一种亵渎生命的折磨,哎,,忙活了好几天,全都白瞎了,宣告破产,,,
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

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

热门用户

GMT+8, 2024-3-29 22:04