Python用作数据处理仍是至关不错的,若是你想要作爬虫,python是很好的选择,它有不少已经写好的类包,只要调用,便可完成不少复杂的功能,此文中全部的功能都是基于BeautifulSoup这个包。html
1、 BeautifulSoup的安装 python
1.器中搜索beautifulsoup ,进入beautifulsoup的文档所在网站,是英文的,不过能够转换成的中文。网络
2.如图所示的超连接。进入下一页。点击下载,进行下载。学习
3.击beautifulsoup 4.3.2,这是目前的最新版本。网站
四、在这一页,找到这个文件夹,点击进入。编码
五、选择这个超连接下载。url
六、下载完成以后,进行解压。建议放在Python的安装目录。这样比较好找。spa
七、从解压后的文件夹,在路径目录处输入cmd进入DOS模式,输入:python setup.py install进行手动安装.net
注意:除了上述的安装方法也能够进行自动安装,找到pip.exe所在的目录,进入DOS系统,输入pip install BeautifulSoup43d
2、 BeautifulSoup的使用
1. 首先创构造一个BeautifulSoup对象
下面有一些最简单的例子:
(1)经过字符串建立BeautifulSoup对象
from bs4 import BeautifulSoup
helloworld = '<p>Hello World</p>'
soup_string = BeautifulSoup(helloworld, "html.parser")
print(soup_string)
# 返回结果:
# <p>Hello World</p>
(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标签,按顺序从中选相对应的,在此图中是第三个,因此这种方法能够找特定行或列的内容。代码比较简单,很容易就实现了,若是有什么地方不对,还请你们指出,你们共同窗习