加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:39:16 所属栏目:百科 来源:网络整理
导读:最近在研究利用Python抓取新浪微博数据,用了五天的时间终于写出了这个代码,借鉴了好多人的经验,也接触到了很多新鲜的东西,在这里小小总结一下。 (一)Python模拟登陆新浪微博 这个主要是利用网上找的例子。 (二)BeautifulSoup 登陆完之后就是抓取数据部分

最近在研究利用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读