精华内容
下载资源
问答
  • 2020-04-26 23:35:28

    BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。

    with open('test.html', 'r', encoding='utf-8') as f:
     	Soup = BeautifulSoup(f.read(), 'html.parser')
     	titles = Soup.select('ul > li > div.article-info > h3 > a')
     	
    for title in titles:
    	 print(title.text)
    

    BeautifulSoup详细教程
    BeautifulSoup使用案例

    更多相关内容
  • 今天小编就为大家分享一篇Python读取本地文件并解析网页元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python读取本地html文件并进行简单的处理来获取文字

    以个人成绩网页页面为例:
    在这里插入图片描述
    右键查看源代码:
    在这里插入图片描述
    右键另存为单独的html文件,然后代码读取并处理

    import re
    
    f = open("GP.html","r",encoding='utf-8')
    html = f.read()
    
    table = re.findall(r'<table(.*?)</table>', html, re.S)#查找html中table之间的内容
    nowtable = table[0]#前两个表格为成绩信息
    nowtable = nowtable.replace('\t','')#将空格换行等去除
    nowtable = nowtable.replace('\n','')
    nowtable = nowtable.replace(' ','')
    nowtable = nowtable.replace('&nbsp','')
    td0 = re.findall(r'<tdclass="center">(.*?)</td>', nowtable, re.S)#成绩想关的信息都在tdclass="center"td之间
    print("主修课程信息为:\n",td0)
    nowtable = table[1]
    nowtable = nowtable.replace('\t','')
    nowtable = nowtable.replace('\n','')
    nowtable = nowtable.replace(' ','')
    nowtable = nowtable.replace('&nbsp','')
    td1 = re.findall(r'<tdclass="center">(.*?)</td>', nowtable, re.S)
    print("选修课信息为:\n",td1)
    print("选修课信息第一个值为:\n",td1[0])
    

    结果:
    在这里插入图片描述
    如果想要计算GPA,字符转换为对应的数值进行计算就行了

    展开全文
  • Python使用爬虫技术时,每...一、将网页源代码存在本地1、打开需要爬取的网页,鼠标右键查看源代码2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html二、在Python中打开本地html文件打开并读取本...

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

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

    1、打开需要爬取的网页,鼠标右键查看源代码

    1782691-20191208021258262-27644528.png

    2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html

    1782691-20191208021411135-1486730418.png

    1782691-20191208021652725-588072560.png

    二、在Python中打开本地html文件

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

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

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

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

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

    defdraw_base_list(doc):

    lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article');#爬取一级参数

    for x inlilist:

    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 inSou:if count!=0:#添加计数器判断是否为第一个,不是则添加@

    str1=str1+as=str(x) #将x转换为str类型来添加内容

    str1=str1+s

    count+=1Source=str1print(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('

    change2=re.sub(link,'',change1)

    change3=re.sub('">','',change2)

    change4=re.sub('Baby Names','',change3)

    change5=re.sub('

    ','',change4)

    change=re.sub(' ','',change5)

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

    2、再爬取详细信息

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

    defdraw_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 inGen:if meta ing:

    Gender="boy"

    else:

    Gender="girl"

    #print(Gender)

    for x inDes:#print(x)

    if x.find('a')==None: #该标签下有我们不需要的信息,查看源代码找到信息之间的联系,发现不需要的信息中都有链接

    c=str(x)

    change1=re.sub('

    ','',c) #与一级信息函数一样删除指定内容

    change2=re.sub('

    ','',change1)

    change3=re.sub(' ','',change2)

    change=re.sub(' ','@',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文件中

    defdraw_base_list(doc):

    ......#爬取一级参数

    for x inlilist:

    ......for x inSou:

    ......

    ......

    draw_detail_list(Link,EnName,Meaning,Source)#将数据传给二级信息函数

    defdraw_detail_list(url,EnName,Meaning,Source):

    ......for i inGen:

    ......for x inDes:

    ......

    data={

    ......

    }

    write_dictionary_to_csv(data,'Names') #将字典传给存放数据函数,并给定csv文件名

    defwrite_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=' ',quoting=csv.QUOTE_ALL, skipinitialspace=True)

    w.writerow(dict)

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

    #防止每次循环重复写入列头

    if os.path.getsize(file_name)==0 : #通过文件大小判断文件是否为空,为0说明是空文件

    w.writeheader()

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

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

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

    展开全文
  • 通过python中BeautifulSoup库解析html文件并输出到csv文件中
  • python解析本地HTML文件

    千次阅读 2020-12-13 10:07:26
    Python使用爬虫技术时,每运行一...一、将网页源代码存在本地1、打开需要爬取的网页,鼠标右键查看源代码 2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html 二、在Python中打开本地html文件打开并...

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

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

    1、打开需要爬取的网页,鼠标右键查看源代码

    2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html

    二、在Python中打开本地html文件

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

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

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

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

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

    defdraw_base_list(doc):

    lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article');#爬取一级参数

    for x inlilist:

    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 inSou:if count!=0:#添加计数器判断是否为第一个,不是则添加@

    str1=str1+as=str(x) #将x转换为str类型来添加内容

    str1=str1+s

    count+=1Source=str1print(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('','',change2)

    change4=re.sub('Baby Names','',change3)

    change5=re.sub('','',change4)

    change=re.sub(' ','',change5)

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

    2、再爬取详细信息

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

    defdraw_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 inGen:if meta ing:

    Gender="boy"

    else:

    Gender="girl"

    #print(Gender)

    for x inDes:#print(x)

    if x.find('a')==None: #该标签下有我们不需要的信息,查看源代码找到信息之间的联系,发现不需要的信息中都有链接

    c=str(x)

    change1=re.sub('

    ','',c) #与一级信息函数一样删除指定内容

    change2=re.sub('

    ','',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文件中

    defdraw_base_list(doc):

    ......#爬取一级参数

    for x inlilist:

    ......for x inSou:

    ......

    ......

    draw_detail_list(Link,EnName,Meaning,Source)#将数据传给二级信息函数

    defdraw_detail_list(url,EnName,Meaning,Source):

    ......for i inGen:

    ......for x inDes:

    ......

    data={

    ......

    }

    write_dictionary_to_csv(data,'Names') #将字典传给存放数据函数,并给定csv文件名

    defwrite_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、访问主机,完成信息爬取

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

    展开全文
  • 当你需要用到html文件中的表格数据时,你可能会想到复制粘贴,将表格数据粘贴到EXCEL表中,但如果表格太多,或者数据量很大,复制粘贴的工作量还是很大的。本文提供一种爬虫的方法,爬取hrml中的表格数据并保存为csv...
  • 本地文件 <html lang="en"> <head> <meta charset="UTF-8" /> <title>测试bs4</title> </head> <body> <div> <p>百里守约</p> </div> ...
  • 例如 具有如下结构的html文件感兴趣内容1感兴趣内容2……感兴趣内容n内容1内容2……内容n我们尝试获得'感兴趣内容'对于文本内容,我们保存到IDList中。可是如何标记我们遇到的文本是感兴趣的内容呢,也就是,处于这里...
  • python如何读取HTML文件

    2020-09-24 15:21:08
    想问下Python如何读取本地HTML文件并提取文本?尝试过用python自带的命令(如下)但效果不好 ``` with open(……, 'r', 'encoding='utf-8'): ```
  • 我在python中使用本地html文件,我正在尝试使用lxml来解析文件.由于某种原因,我无法正确加载文件,我不确定这是否与我的本地计算机上没有设置http服务器,etree用法或其他内容有关.这是我的代码:from lxml import ...
  • python爬虫之bs4数据解析的本地文档源码
  • 文件名,mode模式)mode模式有以下几种:#w 只能操作写入 r 只能读取 a 向文件追加#w+ 可读可写 r+可读可写 a+可读可追加#wb+写入进制数据#w模式打开文件,如果而文件中有数据,再次写入内容,会把原来的覆盖掉2、向...
  • 文章目录遇到的问题初始需要处理的文本搜索和替换的一些常用正则表达式python3中使用beautifulsoup4beautifulsoup4是什么?安装beautifulsoup4开始使用beautifulsoup4其他的一些小细节python3中将list合并转为string...
  • Python 读取HTML表格 pd.read_html()

    千次阅读 2021-05-25 14:52:54
    数据部门提供的数据是xls格式的文件,但是执行读取xls文件的脚本报错。 xlrd报错: xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'<html xm' 读取xlrd的脚本 data_...
  • 读取py文件所在的目录,读取文件名,生成html mylist = os.listdir('.') file = open('.\\' + 'new' + '.html','w') for adir in mylist: file.write('<img src="' + adir + '"><br><br>') ...
  • python 读取 网络 文件

    千次阅读 2020-12-20 12:07:37
    输入与输出大致可分为三类:0.1 读取文本文件和其他更好效的磁盘存储格式2.2 使用数据库中的数据0.3 利用Web API操作网络资源1. 读取文本文件和其他更好效的磁盘存储格式pandas提供了一些用于将表格型数据读取为D......
  • 4 个答案:答案 0 :(得分:1)from bs4 import BeautifulSoup# Open test.html for readingwith open('test.html') as html_file:soup = BeautifulSoup(html_file.read(), features='html.parser')# Go through each '...
  • 本文要点刚要:(一)读文本文件格式的数据函数:read_csv,read_table1.读不同分隔符的文本文件,用参数sep2.读无字段名(表头)的文本...(二)将数据写成文本文件格式函数:to_csv范例如下:(一)读取文本文件格...
  • python读取json文件

    千次阅读 2020-05-18 15:50:03
    Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps():对数据进行编码。 json.loads():对数据进行解码。 (2)如果你要处理的是文件而不是字符串,你可以使用json.dump()和...
  • 首先创建一个本地文件config.ini,是.ini格式的配置文件,值不用加引号,读取过去就是字符串格式 ...读取本地配置文件用了个django自带的模块:configparser 在settings.py 中设置如下,按照相对路径取
  • Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加...二、在Python中打开本地html文件 打开并读取本地文件可使用BeautifulSoup方法直接打开 soup=BeautifulSoup(op
  • Python实现读取并保存文件的类

    千次阅读 2021-03-07 00:20:32
    本文实例讲述了Python实现读取并保存文件的类。分享给大家供大家参考,具体如下:这个类写在一个叫class_format.py 的文件里, 放在D盘>>> import os>>> os.chdir("D:\\")>>> os.getcwd...
  • Python读取.tif文件

    千次阅读 2019-09-21 10:37:19
    from libtiff import TIFF不出意外会报错在网址https://www.lfd.uci.edu/~gohlke/pythonlibs/上找到libtiff的包,下载本地,复制本地地址,在自己的编译器中进行pip安装: 搞定! 转载于:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,830
精华内容 19,532
关键字:

python读取本地html文件