设为首页 收藏本站
查看: 753|回复: 0

[经验分享] python 入门,网页数据抓取

[复制链接]

尚未签到

发表于 2017-4-24 11:11:06 | 显示全部楼层 |阅读模式
python 入门,网页数据抓取
正在研究这篇文章:
使用 Python 蛮力提取"网易读书"书籍内容
http://xanpeng.iteye.com/blog/816748
这个不错。正好入门学习使用。
1、其中用到 feedparser:
技巧:使用 Universal Feed Parser 驾驭 RSS
http://www.ibm.com/developerworks/cn/xml/x-tipufp.html
请访问 feedparser.org,详细了解 Universal Feed Parser,其中还包括一些下载资料和文档。
feedparser 实际下载地址:
http://code.google.com/p/feedparser/downloads/list
2、另外,需要将文件加上 utf-8 的 bom 头,需要用到 python 写入十六进制字符:
http://linux.byexamples.com/archives/478/python-writing-binary-file/
python 写入十六进制字符
file.write("\x5F\x9D\x3E")
file.close()
3、因为要调试,文件的打开模式改成 w 方便一些。

import urllib
import sys
import re
from feedparser import _getCharacterEncoding as enc
class TagParser:
def __init__(self, value):
self.value = value
def get(self, start, end):
regx = re.compile(r'<' + start + r'.*?>.*</' + end + r'>')
return re.findall(regx, self.value)
if __name__ == "__main__":
baseurl = "http://data.book.163.com/book/section/000BAfLU/000BAfLU"
f = open("test_01.txt", "w")
f.write("\xef\xbb\xbf")
#    for ndx in range(0, 56):
for ndx in range(0, 1):
url = baseurl + str(ndx) + ".html"
print "get content from " + url
src = urllib.urlopen(url)
text = src.read()
f1= open("tmp_" + str(ndx) + ".txt", "w")
f1.write(text)
f1.close()
encoding = enc(src.headers, text)[0]
tp = TagParser(text)
title = tp.get('h1 class="f26s tC"', 'h1')
article = tp.get('p class="ti2em"', 'p')
t = re.sub(r'</.+>', '\n', title[0])
t = re.sub(r'<.+>', '\n', t)
data = t
c = ""
for p in article:
pt = re.sub(r'</p>', '\n', p)
c += pt
c = re.sub(r'<.+>', '\n', c)
data += c
data = data.decode(encoding)
f.write(data.encode('utf-8', 'ignore'))
f.close()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368576-1-1.html 上篇帖子: Python, Ruby和Perl 下篇帖子: Python 开源项目大杂烩
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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