博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BeautifulSoup的安装和使用
阅读量:5098 次
发布时间:2019-06-13

本文共 2568 字,大约阅读时间需要 8 分钟。

用做数据处理还是相当不错的,如果你想要做爬虫,是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包。

一、          BeautifulSoup的安装 

 

 

 

 

1.器中搜索beautifulsoup ,进入beautifulsoup的文档所在网站,是英文的,不过可以转换成的中文。

 

2.如图所示的超链接。进入下一页。点击下载,进行下载。

 

 

3.击beautifulsoup 4.3.2,这是目前的最新版本。

4、在这一页,找到这个文件夹,点击进入。

5、选择这个超链接下载。

 

 

6、下载完成之后,进行解压。建议放在Python的安装目录。这样比较好找。

7、从解压后的文件夹,在路径目录处输入cmd进入DOS模式,输入:python setup.py install进行手动安装

注意:除了上述的安装方法也可以进行自动安装,找到pip.exe所在的目录,进入DOS系统,输入pip install BeautifulSoup4

二、          BeautifulSoup的使用

1. 首先创构造一个BeautifulSoup对象

下面有一些最简单的例子:

1)通过字符串创建BeautifulSoup对象

from bs4 import BeautifulSoup helloworld = '

Hello World

' soup_string = BeautifulSoup(helloworld, "html.parser") print(soup_string) # 返回结果: #

Hello World

2)通过类文件对象创建BeautifulSoup对象

from urllib.request import urlopen from bs4 import BeautifulSoup url = "http://www.baidu.com" page =urlopen(url) soup = BeautifulSoup(page,"html.parser") print(soup)
返回结果:

注意:因为前面说的Urllib库用urlopen()返回的就是一个类文件对象,所以这里的结果和之前Urllib中对象调用read()得到的结果是一样的。

3)通过本地文件对象创建BeautifulSoup对象

 

from bs4 import BeautifulSoup with open('index.html','r',encoding='utf-8') as foo_file :     soup_foo = BeautifulSoup(foo_file, "html.parser")     print (soup_foo)

返回结果:

注意:index.html文件要存在,并且要根据情况定义字符编码encoding

 

2. 获取网页中想要的内容(先要获得网页源代码,再分析网页源代码,找所对应的标签,然后提取出标签中的内容)

网址是http://movie.douban.com/top250?format=text,进入网址后就出现如下的图:

现在我需要获得当前页面的所有电影的名字,评分,评价人数,链接

  由上图画红色圆圈的是我想得到的内容,画蓝色横线的为所对应的标签,这样就分析完了,现在就是写代码实现,Python提供了很多种方法去获得想要的内容,在此我使用BeautifulSoup来实现,非常的简单: 

from urllib.request import urlopen from bs4 import BeautifulSoup from distutils.filelist import findall page = urlopen('http://movie.douban.com/top250?format=text') contents = page.read() # print(contents) 显示网络中的内容,格式是字节 soup = BeautifulSoup(contents,"html.parser") #print(soup)以html的格式显示内容 print("豆瓣电影TOP250" + "\n" +" 影片名              评分       评价人数     链接 ") #标题 for tag in soup.find_all('div', class_='info'): # print tag     m_name = tag.find('span', class_='title').get_text()     m_rating_score = float(tag.find('span',class_='rating_num').get_text())     m_people = tag.find('div',class_="star")     m_span = m_people.findAll('span')     m_peoplecount = m_span[3].contents[0]     m_url=tag.find('a').get('href')     print( m_name+"        "  +  str(m_rating_score)   + "           " + m_peoplecount + "    " + m_url )

 

控制台输出结果如下,你也可以写入文件中

  前三行代码获得整个网页的源代码,之后开始使用BeautifulSoup进行标签分析,find_all方法是找到所有此标签的内容,然后在在此标签中继续寻找,如果标签有特殊的属性声明则一步就能找出来,如果没有特殊的属性声明就像此图中的评价人数前面的标签只有一个‘span’那么就找到所有的span标签,按顺序从中选相对应的,在此图中是第三个,所以这种方法可以找特定行或列的内容。代码比较简单,很容易就实现了,如果有什么地方不对,还请大家指出,大家共同学习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/MLing/p/7206217.html

你可能感兴趣的文章
【转】跟面试官聊.NET垃圾收集,直刺面试官G点
查看>>
并行编程1——什么是并行程序?
查看>>
快速判断
查看>>
小米范工具系列之十二:绿盟报告提取端口工具
查看>>
用户界面与业务逻辑的分离
查看>>
山东历史沿革 (zz)
查看>>
编程注意事项
查看>>
MySQL innodb中各种SQL语句加锁分析
查看>>
继续学习C:数字进制表示
查看>>
Java开发牛人十大必备网站
查看>>
荐读|属性与可直接访问的数据成员之间应该如何选
查看>>
angular中的$http服务
查看>>
一步一步分析Caliburn.Micro(三:绑定执行方法ActionMessage是怎么执行的)
查看>>
Sublime Text快捷键
查看>>
.NET 微信开放平台接口
查看>>
js、jquery报错
查看>>
IOS 多线程(3) --线程安全
查看>>
Git上传时,忽略多个不想上传的文件——每周汇总(第一周)
查看>>
Volley
查看>>
【转载】async await 异步编程详解
查看>>