精华内容
下载资源
问答
  • 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解析本地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、访问主机,完成信息爬取

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

    展开全文
  • 今天小编就为大家分享一篇Python读取本地文件解析网页元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 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中的本地html文件,我正在尝试使用lxml来解析文件。...如何使用Python和lxml解析本地html文件?这里是我的代码:from lxml import htmlimport requestspage = requests.get('C:\Users\...

    我正在使用python中的本地html文件,我正在尝试使用lxml来解析文件。出于某种原因,我无法正确加载文件,而且我不确定这是否与在本地计算机上没有设置http服务器,etree用法或其他内容有关。如何使用Python和lxml解析本地html文件?

    这里是我的代码:

    from lxml import html

    import requests

    page = requests.get('C:\Users\...\sites\site_1.html')

    tree = html.fromstring(page.text)

    test = tree.xpath('//html/body/form/div[3]/div[3]/div[2]/div[2]/div/div[2]/div[2]/p[1]/strong/text()')

    print test

    是我得到的回溯写着:

    C:\Python27\python.exe "C:/Users/.../extract_html/extract.py"

    Traceback (most recent call last):

    File "C:/Users/.../extract_html/extract.py", line 4, in

    page = requests.get('C:\Users\...\sites\site_1.html')

    File "C:\Python27\lib\site-packages\requests\api.py", line 69, in get

    return request('get', url, params=params, **kwargs)

    File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request

    response = session.request(method=method, url=url, **kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request

    resp = self.send(prep, **send_kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 567, in send

    adapter = self.get_adapter(url=request.url)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 641, in get_adapter

    raise InvalidSchema("No connection adapters were found for '%s'" % url)

    requests.exceptions.InvalidSchema: No connection adapters were found for 'C:\Users\...\sites\site_1.html'

    Process finished with exit code 1

    你可以看到它与“连接适配器”有关,但我不确定这意味着什么。

    2015-09-24

    rdevn00b

    +0

    为什么不从一个本地HTML文件的最小示例开始?让你更容易为你学习,你可以在这里发布内容,让每个人都更容易遵循。 –

    +0

    不幸的是,该文件是巨大的,我担心简化它可能产生程序的输出。 –

    展开全文
  • python爬虫之bs4数据解析本地文档源码
  • Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加...二、在Python中打开本地html文件 打开并读取本地文件可使用BeautifulSoup方法直接打开 soup=BeautifulSoup(op
  • 我在python中使用本地html文件,我正在尝试使用lxml来解析文件.由于某种原因,我无法正确加载文件,我不确定这是否与我的本地计算机上没有设置http服务器,etree用法或其他内容有关.这是我的代码:from lxml import ...
  • 问题描述:使用lxml.etree.parse()解析html文件,该方法默认使用的是“XML”解析器,所以如果碰到不规范的html文件时就会解析错误,报错代码如下: 解决方法:自己创建html解析器,增加parser参数 from lxml ...
  • Beautiful Soup 是一个可以从 HTML 或 XML 格式文件中提取数据的 Python 库,他可以将HTML 或 XML 数据解析Python 对象,以方便通过Python代码进行处理。 文档环境 Centos7.5 Python2.7 BeautifulSoup4 ...
  • Python读取本地文件解析网页元素

    万次阅读 2017-01-26 20:18:23
    from bs4 import BeautifulSoup ...path = './web/new_index.html' with open(path, 'r') as f: Soup = BeautifulSoup(f.read(), 'lxml') titles = Soup.select('ul > li > div.article-info > h3 > a') for
  • Python爬虫——Xpath本地文件解析

    千次阅读 2022-03-14 21:58:15
    Python爬虫中的Xpath本地解析
  • 一、说明 解析html文件我喜欢用xpath不喜欢... 但是Requests-HTML一开始就是针对Requests从网络请求页面计的,并不能解析本地html文件。 想用Requests-HTML解析本地html文件,我们可借助Requests-File库实现。 ...
  • 自己写个 HTML 解析器来解析吗?还是用正则表达式?这些都不是最好的办法,好在,Python 社区在这方便早就有了很成熟的方案,BeautifulSoup 就是这一类问题的克星,它专注于 HTML 文档操作,名字来源于 Lewis ...
  • 通过python中BeautifulSoup库解析html文件并输出到csv文件中
  • 和json类似也是用于存储和传输数据,还可以用作配置文件。 类似于HTML超文本标记语言,但是HTML所有的标签都是预定义的,而xml的标签是自行定义。 XML 和 HTML 为不同的目的而设计,HTML 旨在显示信息,而 XML ...
  • 读取本地html文件,利用BeautifulSoup库解析出其中img图片的连接地址 再用urllib.urlretrieve()存到本地。 ===============================以下为代码部分================================== #coding=utf-8 ...
  • 当你需要用到html文件中的表格数据时,你可能会想到复制粘贴,将表格数据粘贴到EXCEL表中,但如果表格太多,或者数据量很大,复制粘贴的工作量还是很大的。本文提供一种爬虫的方法,爬取hrml中的表格数据并保存为csv...
  • 使用Python bs4模块解析HTML
  • 今天小编就为大家分享一篇python3爬虫获取html内容及各属性值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用Beautifulsoup解析本地html文件

    万次阅读 多人点赞 2017-12-19 16:08:09
    有时候网络上的资源可以通过html保存在本地,然后再解析本地html文件,提取有用的信息。
  • 我们来聊聊BS4是个啥,它能干啥,BS4是一个从HTML和XML文件中提取数据的python库,它可以将复杂HTML文件转换为一个复杂的树形结构,这棵树的每一个结点都是Python对象,所有对象都可以归纳为4类,这四个对象能干啥呢...
  • 文章目录遇到的问题初始需要处理的文本搜索和替换的一些常用正则表达式python3中使用beautifulsoup4beautifulsoup4是什么?安装beautifulsoup4开始使用beautifulsoup4其他的一些小细节python3中将list合并转为string...
  • python解析本地网页中的元素

    千次阅读 2019-08-30 15:09:40
    本次学习使用到的文件: 链接:https://pan.baidu.com/s/1Kp0yZ-zHFJ0WmM1UZCRMOA 提取码:uhev 需求:学会筛选处所有评分大于3的文章展现标题和对应的分类 第一步:使用BeautifulSoup解析网页 Soup = ...
  • 例如 具有如下结构的html文件感兴趣内容1感兴趣内容2……感兴趣内容n内容1内容2……内容n我们尝试获得'感兴趣内容'对于文本内容,我们保存到IDList中。可是如何标记我们遇到的文本是感兴趣的内容呢,也就是,处于这里...
  • 我们可以用Python来将一个网页保存为本地HTML文件,这需要用到urllib库。比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下:import urllib.requestdef getHtml(url):html = urllib.request....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,838
精华内容 19,935
关键字:

python解析本地html文件