鱼C论坛

 找回密码
 立即注册
查看: 2690|回复: 7

请教一下大家 有没有网页中提取中文的好方法?

[复制链接]
发表于 2014-9-16 22:59:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ~风介~ 于 2015-6-5 23:44 编辑

python新手,在2.7环境下自己想编一个抠网页电子书的爬虫,网页能爬下来,但是主要问题是对于其中的中文电子书内容,由于存在很多的换行,还有夹杂着稀奇古怪的字符。。很难干净的提取出来
初学了正则表达式,但具体的还不是特别的顺手,所以求助一下大家,应该怎么从html文本中提取中文内容比较好呢?
附上我目前编写的程序~~希望大家能多多指教

  1. #-*- coding:utf-8 -*-
  2. import re
  3. import urllib
  4. def get_content(url):
  5.     """doc."""
  6.     html = urllib.urlopen(url)
  7.     content = html.read()
  8.     html.close
  9.     return content

  10. def get_ebooks(info):
  11.     """
  12.     用来获得电子书的内容部分,存入
  13.     """
  14.     #regex = r'id="BookText"> \((.+</div>)|"BookText"(.+</p></div>)'
  15.     regex = r'"BookText"(.+</div>)'
  16.     pat = re.compile(regex)
  17.     ebook_content = re.findall(pat,info)
  18.     a= ebook_content[0]
  19.     #print ebook_content
  20.     return a


  21. url = 'http://www.zanghaihua.org/2428.html'
  22. html = get_content(url)
  23. ebook_content=get_ebooks(html)
  24. print ebook_content
  25. a=ebook_content.replace(r"<br /><br />    ",'\n')
  26. a=a.replace(r"<br/><br/>   ",'\n')
  27. a=a.replace(r"”","”")
  28. a=a.replace(r"“","“")
  29. a=a.replace(r"</span></p></div>","")
  30. a=a.replace(r"<br/><br/> ","\n")
  31. b=re.split(r'\n',a)
  32. print a
  33. fl=open('3.txt', 'w')
  34. for i in b:
  35.     fl.write('\n')
  36.     fl.write('    ')
  37.     fl.write(i)
  38. fl.close()   
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-9-16 23:42:13 | 显示全部楼层
可以用beautifulsoup
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-17 08:49:51 | 显示全部楼层
bevin 发表于 2014-9-16 23:42
可以用beautifulsoup

Ok,多谢 我去找找相关的资料看看~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-17 11:32:43 | 显示全部楼层
提取的时候加个.decode(utf-8),content = html.read().decode('utf-8')
写入的时候加个(encoding = 'utf-8'),fl=open('3.txt', 'w',encoding = 'utf-8') 。
我3.4.1的版本这样能弄到中文,你可以看看那个网页的编码来确定用哪个。

顺便拿走学习一下,我就会爬单页。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-17 12:40:29 | 显示全部楼层
wei_Y 发表于 2014-9-17 11:32
提取的时候加个.decode(utf-8),content = html.read().decode('utf-8')
写入的时候加个(encoding = 'utf- ...

这里问一下哈~既然本来是utf-8编码,那为什么还要decode,之后又encode呢??我平时除非网页是GBK或者其他编码的时候用到。。。
还要我的意思其实是,怎样从复杂的网页格式中把纯净的内容提取出来,比如有些换行的地方会有一些诸如&bsn什么的乱码之类的。。或者开头的div格式声明。。这种不知道怎么处理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-17 12:45:27 | 显示全部楼层
hellofdy 发表于 2014-9-17 12:40
这里问一下哈~既然本来是utf-8编码,那为什么还要decode,之后又encode呢??我平时除非网页是GBK或者其 ...

可能因为系统摘下来和它的编码不一样。所以要解码,然后编码。具体我也不大会。
我本来也是弄得乱码,在'可爱的python'中有这一小节。pdf版的50页。所以我顺着思路来了一遍就变成正常的了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-18 14:39:07 | 显示全部楼层
wei_Y 发表于 2014-9-17 12:45
可能因为系统摘下来和它的编码不一样。所以要解码,然后编码。具体我也不大会。
我本来也是弄得乱码,在 ...

好 我先去看看~~多谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 10:59:43 | 显示全部楼层
我的目标也是这个、向你学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 03:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表