BeautifulSoup+正则+Python 抓取网页数据

前端之家收集整理的这篇文章主要介绍了BeautifulSoup+正则+Python 抓取网页数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在研究利用Python抓取新浪微博数据,用了五天的时间终于写出了这个代码,借鉴了好多人的经验,也接触到了很多新鲜的东西,在这里小小总结一下。

(一)Python模拟登陆新浪微博

这个主要是利用网上找的例子。

(二)BeautifulSoup

登陆完之后就是抓取数据部分了,这里我主要用到了两个技术。首先就是BeautifulSoup,这个是需要自己安装的,安装方法如下:

Windows平台安装Beautiful Soup
下面说一下在Windows下面如何安装Beautiful Soup:
1.http://www.crummy.com/software/BeautifulSoup/bs4/download/下载,最新版本是beautifulsoup4-4.3.2。
2.下载完成之后需要解压缩,假设放到D:/python下。
3.运行cmd,切换到D:/python27/beautifulsoup4-4.3.2/目录下(根据自己解压缩后的目录和下载的版本号修改),
cd /d D:/python27/beautifulsoup4-4.3.2
4.运行命令:
setup.py build
setup.py install
5.在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功。

Beautiful Soup 的官方文档齐全,将官方给出的例子实践一遍就能掌握。官方英文文档,中文文档


我用BeautifulSoup主要是为了获取HTML文档里结构化的数据的列表,如果只是单单获取某一个数据,就可以采用正则。下面就是正则和soup一起用的例子

webpage = self.fetch(url)
        soup = BeautifulSoup(webpage)
        top_div=soup.findAll('div',{'id':'anything'})
        all_a = top_div[0].findAll('a')
        userID = ''
        for a in all_a:
            str_href = a.get('href')
            #print str_href
            pattern = '/(\d+)/info'
            my_href = re.findall(pattern,str_href)
            if my_href:
                userID = my_href[0]
                print 'userID: ' + userID

(三)正则

Python+正则例子很多,我主要是参考这个教程http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

核心应该就是这个图了


代码例子如下:

#获取页数    
    def get_page_count(self,url):
        
        pattern = 'type="hidden" value="(\d+?)"'
        page_number = re.findall(pattern,self.fetch(url))
        if page_number:
            return page_number[0]
        return 1

猜你在找的正则表达式相关文章