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




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值