精华内容
下载资源
问答
  • 2020-11-11 14:06:37

    import sys

    import os

    import os.path

    from html.parser import HTMLParser

    #定义HTMLParser的子类,用以复写HTMLParser中的方法

    class MyHTMLParser(HTMLParser):

    #构造方法,定义data数组用来存储html中的数据

    def __init__(self):

    HTMLParser.__init__(self)

    self.data = ""

    self.flag = False

    #self.index = 0

    #覆盖starttag方法,可以进行一些打印操作

    def handle_starttag(self, tag, attrs):

    #pass

    #print("遇到起始标签:{} 开始处理:{}".format(tag, tag))

    #if tag == "tr":

    # self.index = 0

    if tag == "div":

    for k,v in attrs:#遍历div的所有属性以及其值

    if k == "class" and v == "cell":#确定进入了

    #self.index = self.index + 1

    self.flag = True

    self.data = self.data + """

    return

    #覆盖endtag方法

    def handle_endtag(self, tag):

    #pass

    #print("遇到结束标签:{} 开始处理:{}".format(tag, tag))

    if self.flag == True:

    self.data = self.data + "","

    self.flag = False

    return

    #遇到tr结束,增加一个回车

    if tag == "tr":

    self.data = self.data + " "

    #覆盖handle_data方法,用来处理获取的html数据,这里保存在data数组

    def handle_data(self, data):

    #pass

    #print("遇到数据:{} 开始处理:{}".format(data, data))

    if(self.flag == True):

    data = data.replace(" ","")#替换字段中的回车

    data = data.replace(" ","")#替换字段中的连续两个空格

    self.data = self.data + data

    def read_file(filename):

    fp = open(filename,"r",encoding="utf-8")

    content = fp.read()

    fp.close()

    return content

    def write_file(filename,content):

    fp = open(filename,"a+",encoding="utf-8")

    fp.write(content)

    fp.close()

    def main():

    csv_file = "1.csv"

    #会员信息

    #write_file(csv_file,""序号","账号","账号状态","登录IP","最近登录时间","登录次数","上级账号","交易次数","交易流水","账号余额","姓名" ")

    #资金账户信息

    write_file(csv_file,""序号","卡号/账户","开户行/平台","余额","流水","所在地","姓名","用户名","手机号","qq","邮箱","注册IP","注册时间" ")

    parser = MyHTMLParser()

    for i in range(1,3):

    html_file = "%d.html"%i

    print(html_file)

    if os.path.exists(html_file) == False:

    print(html_file + "文件不存在!")

    return

    content = read_file(html_file)

    #print(content)

    parser.feed(content)

    #对解析后的数据进行相应操作

    #print(parser.data)

    write_file(csv_file,parser.data)

    parser.close()

    main()

    更多相关内容
  • python解析html的几种方法,lxml,xpath,htmlparser,SGMLParser等操作
  • 使用Python解析html文件

    千次阅读 2018-12-22 10:14:08
    from html.parser import HTMLParser #定义HTMLParser的子类,用以复写HTMLParser中的方法 class MyHTMLParser(HTMLParser): #构造方法,定义data数组用来存储html中的数据 def __init__(self): ...
    import sys
    import os
    import os.path
    
    from html.parser import HTMLParser
    #定义HTMLParser的子类,用以复写HTMLParser中的方法
    class MyHTMLParser(HTMLParser):
        #构造方法,定义data数组用来存储html中的数据
        def __init__(self):
            HTMLParser.__init__(self)
            self.data = ''
            self.flag = False
            #self.index = 0
        
        #覆盖starttag方法,可以进行一些打印操作
        def handle_starttag(self, tag, attrs):
            #pass
            #print("遇到起始标签:{} 开始处理:{}".format(tag, tag))
            #if tag == 'tr':
            #    self.index = 0
            if tag == 'div':
                for k,v in attrs:#遍历div的所有属性以及其值
                    if k == 'class' and v == 'cell':#确定进入了<div class='cell'>
                        #self.index = self.index + 1
                        self.flag = True
                        self.data = self.data + '"'
                        return
        
        #覆盖endtag方法
        def handle_endtag(self, tag):
            #pass     
            #print("遇到结束标签:{} 开始处理:{}".format(tag, tag))
            if self.flag == True:
                self.data = self.data + '",'
                self.flag = False
                return
            #遇到tr结束,增加一个回车
            if tag == 'tr':
                self.data = self.data + '\n'
    
        #覆盖handle_data方法,用来处理获取的html数据,这里保存在data数组
        def handle_data(self, data):
            #pass
            #print("遇到数据:{} 开始处理:{}".format(data, data))
            if(self.flag == True):
                data = data.replace('\n','')#替换字段中的回车
                data = data.replace('  ','')#替换字段中的连续两个空格
                self.data = self.data + data
    
    def read_file(filename):
        fp = open(filename,'r',encoding='utf-8')
        content = fp.read()
        fp.close()
        return content
    
    def write_file(filename,content):
        fp = open(filename,'a+',encoding='utf-8')
        fp.write(content)
        fp.close()
    
    def main():
        csv_file = '1.csv'
        #会员信息
        #write_file(csv_file,'"序号","账号","账号状态","登录IP","最近登录时间","登录次数","上级账号","交易次数","交易流水","账号余额","姓名"\n')
        #资金账户信息
        write_file(csv_file,'"序号","卡号/账户","开户行/平台","余额","流水","所在地","姓名","用户名","手机号","qq","邮箱","注册IP","注册时间"\n')
        
        parser = MyHTMLParser()
        for i in range(1,3):
            html_file = '%d.html'%i
            print(html_file)
            if os.path.exists(html_file) == False:
                print(html_file + '文件不存在!')
                return
            content = read_file(html_file)        
            #print(content)
            parser.feed(content)
            #对解析后的数据进行相应操作
            #print(parser.data)
            write_file(csv_file,parser.data)
            parser.close()
    main()

     

    展开全文
  • python解析本地HTML文件

    千次阅读 2020-09-23 14:29:38
    Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加...二、在Python中打开本地html文件 打开并读取本地文件可使用BeautifulSoup方法直接打开 soup=BeautifulSoup(ope

    Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可。现在我来分享一下爬取资料的调试过程。

    一、将网页源代码存在本地

    1、打开需要爬取的网页,鼠标右键查看源代码
    在这里插入图片描述
    2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html
    在这里插入图片描述在这里插入图片描述
    二、在Python中打开本地html文件

    打开并读取本地文件可使用BeautifulSoup方法直接打开

     soup=BeautifulSoup(open('ss.html',encoding='utf-8'),features='html.parser')  #features值可为lxml
    

    解析后可以直接使用soup,与请求网页解析后的使用方法一致

    三、使用本地文件爬取资料

    1、先爬取主页的列表资料,其中同义内容使用“@”符号连接

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def draw_base_list(doc):
        lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article');
        #爬取一级参数
        for x in lilist:
            str1=''
            count=0
            a='@'
            EnName=x.find('a').text;
            Mean=x.find('div',{'class':'meaning'}).text;
            Sou=x.find('div',{'class','related'}).findAll('a')
            Link=x.find('a').get('href');
            for x in Sou:
                if count!=0:#添加计数器判断是否为第一个,不是则添加@
                    str1=str1+a
                s=str(x)  #将x转换为str类型来添加内容
                str1=str1+s
                count+=1
            Source=str1
            print(Source);     print(Meaning)

    运行后发现Source和Meaning中包含了标签中的内容,我们使用正则表达式re.sub()方法删除str中指定内容。查看源代码可以发现标签内容只有一个链接,可以获取标签内的链接后再指定删除。

    首先在for循环内给定一个值获取标签内的链接link=x.get(‘href’),接着使用sub方法指定删除link。代码如下:

    link=x.get('href')
    change2=re.sub(link,'',s)
    

    运行后我们发现str中还存在标签名,在for循环中指定多余内容删除:

    link=x.get('href')
    s=str(x)
    change1=re.sub('<a href="','',s)
    change2=re.sub(link,'',change1)
    change3=re.sub('">','',change2)
    change4=re.sub(' Baby Names','',change3)
    change5=re.sub('</a>','',change4)
    change=re.sub(' ','',change5)
    

    最后就能得到想要的信息。

    2、再爬取详细信息

    通过def draw_base_list(doc)函数向二级详情函数传递Link参数爬取详细信息,为避免频繁访问主机,我们同样将详情页的源代码保存至本地并解析。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def draw_detail_list():
        str1=‘’
        meta="boy"
        doc=BeautifulSoup(open('nn.html',encoding='utf-8'),features='html.parser')
        Des=doc.find('div',{'class':'single-babyname-wrapper'}).findAll('p')
        Gen=doc.find('div',{'class':'entry-meta'}).find('a')
        #print(Gen)
        g=str(Gen)
        for i in Gen:
            if meta in g:
                Gender="boy"
            else:
                Gender="girl"
        #print(Gender)
        for x in Des:
            #print(x)
            if x.find('a')==None:  #该标签下有我们不需要的信息,查看源代码找到信息之间的联系,发现不需要的信息中都有链接
                c=str(x)
                change1=re.sub('<p>','',c)  #与一级信息函数一样删除指定内容
                change2=re.sub('</p>','',change1)
                change3=re.sub('\t','',change2)
                change=re.sub('\n','@',change3)
                str1=str1+change
                #Description=x.text
                #print(Description)
        Description=str1
        #print(Description)
        data={  #将数据存进字典中方便将数据保存至csv文件或数据库中
            'EnName':EnName,
            'CnName':'',
            'Gender':Gender,
            'Meaning':Meaning,
            'Description':Description,
            'Source':Source,
            'Character':'',  #网页中没有的信息数据列为空
            'Celebrity':'',
            'WishTag':''
        }
        #print(data)
    

    3、将爬取下来的数据存入csv文件中

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def draw_base_list(doc):
        ......
        #爬取一级参数
        for x in lilist:
            ......
            for x in Sou:
                ......
            ......
            draw_detail_list(Link,EnName,Meaning,Source)  #将数据传给二级信息函数
    
    def draw_detail_list(url,EnName,Meaning,Source):
        ......
        for i in Gen:
            ......
        
        for x in Des:
            ......
        
        data={
            ......
        }
        write_dictionary_to_csv(data,'Names')  #将字典传给存放数据函数,并给定csv文件名
    
    def write_dictionary_to_csv(dict,filename):
        file_name='{}.csv'.format(filename)
        with open(file_name, 'a',encoding='utf-8') as f: 
            file_exists = os.path.isfile(filename)
            w =csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator='\n',quoting=csv.QUOTE_ALL, skipinitialspace=True)
            w.writerow(dict)
    

    打开文件后发现没有文件头,为避免重复写入文件头,判断文件是否为空,若为空则写入文件头:

    #防止每次循环重复写入列头
    if os.path.getsize(file_name)==0 :  #通过文件大小判断文件是否为空,为0说明是空文件
        w.writeheader()
    

    再次运行后文件头正常写入文件中。

    4、访问主机,完成信息爬取

    确定代码正确没有错误后就可以将打开本地文件的代码改成访问网页,最后完成数据的爬取。

    展开全文
  • 主要介绍了Python实现简单HTML表格解析的方法,涉及Python基于libxml2dom模块操作html页面元素的技巧,需要的朋友可以参考下
  • 下面小编就为大家分享一篇利用python将xml文件解析html文件的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 今天小编就为大家分享一篇Python读取本地文件解析网页元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 对于本地html文件 1 # -*- coding: utf-8 -*- 2 # 使用BeautifulSoup解析网页 3 from bs4 import BeautifulSoup 4 5 #获取要解析的标签 6 with open('test.html','r',encoding='utf-8') as wb_data: 7 ...
    对于本地html文件
    1
    # -*- coding: utf-8 -*- 2 # 使用BeautifulSoup解析网页 3 from bs4 import BeautifulSoup 4 5 #获取要解析的标签 6 with open('test.html','r',encoding='utf-8') as wb_data: 7 Soup = BeautifulSoup(wb_data,'lxml'); #将要解析的文件传入 8 print(Soup); #打印读入Soup中的内容 9 print("!--------------\n") 10 shot_name = Soup.select('body > div > div > table > tbody > tr > td > a'); #将要解析的标签元素路径传入 11 #shot_name = Soup.select('body > div > div > div > ol > li > a'); #将要解析的标签元素路径传入 12 #可以从网站上直接复制 13 print(shot_name,sep='\n!!---------------\n'); #打印解析标签元素包含内容 14 wb_data.close(); 15 16 #解析标签内容-------使用get_text()获得文本内容,使用get('')方法获取标签属性值 17 list = []; 18 for shot in shot_name: 19 data = shot.get('href').strip('\/'); 20 list.append(data); 21 22 with open('shot_names.txt', 'w+') as f: 23 for i in list: 24 f.writelines(i + '\n')

     

    2、对于网页

     1 # -*- coding: utf-8 -*-
     2 from bs4 import BeautifulSoup
     3 import requests
     4 
     5 
     6 url = 'https://hao.360.cn/?a1004'
     7 wb_data = requests.get(url)
     8 soup = BeautifulSoup(wb_data.text,'lxml')   #把web_data变得可读
     9 #解析网页元素,从网站上复制元素的CSS路径
    10 #这里以链接为例
    11 #famous-section > ul.list.first.gclearfix > li:nth-child(7) > a
    12 url_famous = soup.select('#famous-section > ul.list.first.gclearfix > li > a')
    13 #famous-section > ul.list.last.gclearfix > li:nth-child(1) > a
    14 url_famous .append(soup.select('#famous-section > ul.list.last.gclearfix > li > a'))
    15 print(url_famous)
    16 #focus_news > ul > li:nth-child(1) > a
    17 url_focus = soup.select('#focus_news > ul > li > a')
    18 print(url_focus)

     

    转载于:https://www.cnblogs.com/yml6/p/7595270.html

    展开全文
  • 本篇文章主要介绍了Python中利用xpath解析HTML的方法,利用其lxml.html的xpath对html进行分析,获取抓取信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 使用Python解析文件表(MFT)记录 关于 该代码是为2011 DC3挑战编写的。 它最初是使用Python2.7编写的。 该代码在mft.2.7目录中仍然可用。 此后已在mft目录中将其更新为Python3。 该代码不再处于积极开发中 ...
  • 今天小编就为大家分享一篇对Python3 解析html的几种操作方式小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • pythonhtml文件解析

    千次阅读 2019-02-03 13:49:00
    解析html是爬虫后的重要的一个处理数据的环节。一下记录解析html的几种方式。  先介绍基础的辅助函数,主要用于获取html并输入解析后的结束 #把传递解析函数,便于下面的修改 def get_html(url, paraser=bs4_para...
  • Beautiful Soup 是一个可以从 HTML 或 XML 格式文件中提取数据的 Python 库,他可以将HTML 或 XML 数据解析Python 对象,以方便通过Python代码进行处理。 文档环境 Centos7.5 Python2.7 BeautifulSoup4 ...
  • 本文实例讲述了Python大数据之使用lxml库解析html网页文件。分享给大家供大家参考,具体如下: lxml是Python的一个html/xml解析并建立dom的库,lxml的特点是功能强大,性能也不错,xml包含了ElementTree ,html5lib ...
  • Python解析mat文件

    千次阅读 2020-04-10 16:26:08
    mat文件 mat文件是matlab的数据存储的标准格式。mat文件是标准的二进制文件,还可以ASCII...很多数据集的标签都是通过mat文件来存储的,为了解析出图片所对应的的标签信息,我们需要从mat文件中来解析出这些信息, ...
  • /usr/bin/env python # -*- coding: utf-8 -*-#—————————————# 程序:XML解析器# 版本:01.0# 作者:mupeng# 日期:2013-12-18# 语言:Python 2.7# 功能:将xml解析成对应的html# 注解:该程序...
  • python 解析html网页

    千次阅读 2021-01-12 07:05:43
    pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,使用方法:代码如下:from pyquery import PyQuery as pq1、可加载一段HTML字符串,或一个HTML文件,或是一个url地址,例:代码如下:d = pq("hello")d = ...
  • 使用Python bs4模块解析HTML
  • PythonHTML解析

    千次阅读 2021-12-12 21:26:57
    一、强大的BeautifulSoup:BeautifulSoup是一个可以从html或xml文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。在Python开发中,主要用的是BeautifulSoup的查找提取...
  • eml_parser充当python模块,用于解析eml文件并返回在电子邮件中找到的各种信息以及计算出的信息。 提取和生成的信息包括但不限于: 附件 散列 名字 从,到,cc 收到的服务器路径 主题 从邮件的文本内容(包括HTML...
  • python爬虫之bs4数据解析的本地文档源码
  • Python解析ofd文件

    千次阅读 2021-12-20 11:21:59
    # encoding: utf-8 import zipfile import xmltodict import requests import os import shutil def unzip_file(zip_path, ... :param unzip_path: 解压后的文件存放目录 :return: unzip_path """ if not unzi
  • Python使用爬虫技术时,每...一、将网页源代码存在本地1、打开需要爬取的网页,鼠标右键查看源代码2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html二、在Python中打开本地html文件打开并读取本...
  • 和json类似也是用于存储和传输数据,还可以用作配置文件。 类似于HTML超文本标记语言,但是HTML所有的标签都是预定义的,而xml的标签是自行定义。 XML 和 HTML 为不同的目的而设计,HTML 旨在显示信息,而 XML ...
  • python解析yaml文件

    万次阅读 2018-05-03 17:21:34
    YAML引用了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式中获得灵感。目前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。 YAML的语法和其他高级语言类似,并且可以简单表达...
  • html5-parser一个用于Python基于C的快速HTML5解析
  • 众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的技术开发者来完善 python的完美性。 未来人工智能,大数据方向,区块链的识别和进阶都将以python为中心来展开。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,668
精华内容 59,067
关键字:

python解析html文件