侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python解析html提取数据,并生成word文档实例解析

Python  /  管理员 发布于 7年前   180

简介

今天试着用ptyhon做了一个抓取网页内容,并生成word文档的功能,功能很简单,做一下记录以备以后用到。

生成word用到了第三方组件python-docx,所以先进行第三方组件的安装。由于windows下安装的python默认不带setuptools这个模块,所以要先安装setuptools这个模块。

安装

1、在python官网上找到 https://bootstrap.pypa.io/ez_setup.py  ,把代码保存到本地并执行:  python ez_setup.py

2、下载python-docx  (https://pypi.python.org/pypi/python-docx/0.7.4),下载完成后解压并进入到  XXX\python-docx-0.7.4 安装python-docx : python setup.py install

这样python-docx就安装成功了,可以用它来操作word文档了,word文档的生成参考的这里https://python-docx.readthedocs.org/en/latest/index.html

html解析用到的是sgmllib里的SGMLParser  url内容的获取用到的是urllib、urllib2

实现代码

# -*- coding: cp936 -*- from sgmllib import SGMLParser import os import sys import urllib import urllib2 from docx import Document from docx.shared import Inches import time  ##获取要解析的url class GetUrl(SGMLParser):   def __init__(self):     SGMLParser.__init__(self)     self.start=False     self.urlArr=[]     def start_div(self,attr):     for name,value in attr:       if value=="ChairmanCont Bureau":#页面js中的固定值         self.start=True     def end_div(self):     self.start=False     def start_a(self,attr):     if self.start:       for name,value in attr:         self.urlArr.append(value)def getUrlArr(self):     return self.urlArr    ##解析上面获取的url,获取有用数据 class getManInfo(SGMLParser):   def __init__(self):     SGMLParser.__init__(self)     self.start=False     self.p=False     self.dl=False     self.manInfo=[]     self.subInfo=[]    def start_div(self,attr):     for name,value in attr:       if value=="SpeakerInfo":#页面js中的固定值         self.start=True    def end_div(self):     self.start=False    def start_p(self,attr):     if self.dl:       self.p=True    def end_p(self):     self.p=False    def start_img(self,attr):     if self.dl:       for name,value in attr:         self.subInfo.append(value)          def handle_data(self,data):     if self.p:       self.subInfo.append(data.decode('utf-8'))     def start_dl(self,attr):     if self.start:       self.dl=True    def end_dl(self):     self.manInfo.append(self.subInfo)     self.subInfo=[]     self.dl=False    def getManInfo(self):     return self.manInfo  urlSource="http://www.XXX" sourceData=urllib2.urlopen(urlSource).read()  startTime=time.clock() ##get urls getUrl=GetUrl() getUrl.feed(sourceData) urlArr=getUrl.getUrlArr() getUrl.close() print "get url use:" + str((time.clock() - startTime)) startTime=time.clock()   ##get maninfos manInfos=getManInfo() for url in urlArr:#one url one person   data=urllib2.urlopen(url).read()   manInfos.feed(data) infos=manInfos.getManInfo() manInfos.close() print "get maninfos use:" + str((time.clock() - startTime)) startTime=time.clock()  #word saveFile=os.getcwd()+"\\xxx.docx" doc=Document() ##word title doc.add_heading("HEAD".decode('gbk'),0) p=doc.add_paragraph("HEADCONTENT:".decode('gbk'))   ##write info for infoArr in infos:   i=0   for info in infoArr:     if i==0:##img url       arr1=info.split('.')       suffix=arr1[len(arr1)-1]       arr2=info.split('/')       preffix=arr2[len(arr2)-2]       imgFile=os.getcwd()+"\\imgs\\"+preffix+"."+suffix       if not os.path.exists(os.getcwd()+"\\imgs"):         os.mkdir(os.getcwd()+"\\imgs")       imgData=urllib2.urlopen(info).read()        try:         f=open(imgFile,'wb')         f.write(imgData)         f.close()         doc.add_picture(imgFile,width=Inches(1.25))         os.remove(imgFile)       except Exception as err:         print (err)  elif i==1:       doc.add_heading(info+":",level=1)     else:       doc.add_paragraph(info,style='ListBullet')     i=i+1     doc.save(saveFile) print "word use:" + str((time.clock() - startTime)) 

总结

以上就是本文关于python解析html提取数据,并生成word文档实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


  • 上一条:
    python批量替换页眉页脚实例代码
    下一条:
    Python复制Word内容并使用格式设字体与大小实例代码
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客