zoukankan      html  css  js  c++  java
  • Python获取网页指定内容(BeautifulSoup工具的使用方法)

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

    1 Pyhton获取网页的内容(也就是源代码)

    page = urllib2.urlopen(url)   
    contents = page.read()   
    #获得了整个网页的内容也就是源代码  
    print(contents)  

    url代表网址,contents代表网址所对应的源代码,urllib2是需要用到的包,以上三句代码就能获得网页的整个源代码

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

    2.1 以豆瓣电影排名为例子

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

                     

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

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

    复制代码
    #coding:utf-8  
    ''''' 
    @author: jsjxy 
    '''  
    import urllib2   
    import re   
    from bs4 import BeautifulSoup  
    from distutils.filelist import findall  
      
      
      
    page = urllib2.urlopen('http://movie.douban.com/top250?format=text')   
    contents = page.read()   
     #print(contents)  
    soup = BeautifulSoup(contents,"html.parser")  
    print("豆瓣电影TOP250" + "
    " +" 影片名              评分       评价人数     链接 ")    
    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标签,按顺序从中选相对应的,在此图中是第三个,所以这种方法可以找特定行或列的内容。代码比较简单,很容易就实现了,如果有什么地方不对,还请大家指出,大家共同学习。

    源代码地址:http://download.csdn.net/detail/danielntz/9577390

    转自:https://blog.csdn.net/danielntz/article/details/51861168

  • 相关阅读:
    文章分类
    多项式笔记(二)
    P7102 [w3R1] 算
    P3711 仓鼠的数学题
    常见特殊数的多项式求法
    P4091 [HEOI2016/TJOI2016]求和
    CF961G Partitions
    P4609 [FJOI2016]建筑师
    P5401 [CTS2019]珍珠
    P5162 WD与积木
  • 原文地址:https://www.cnblogs.com/wind-chaser/p/11390521.html
Copyright © 2011-2022 走看看