简单的Python爬虫抓数据

说实话,大概两个月之前就打算整理一下近期掌握的知识、技能——C++的socket,sql server结合Dreamweaver以及godaddy的个人建站,stm32结合液晶显示,Multisim等的仿真……
一想起这么多东西就觉得头大,这次先把最近一两天写的一个简单的Python爬虫记录一下

承一位朋友之邀,要求统计一下伦敦、里约两届奥运会微博来源情况,是从网页上发微博的多还是用移动客户端的多呢?

对此,我考虑用Python通过正则表达式来实现。

首先在新浪微博上搜索伦敦奥运会,发现每条消息下面总会有
这里写图片描述

右键查看元素(顺便说一下,不管是写网页或者是爬虫哪怕是黑客等等跟网页有关的东西,都推荐装一下firfox随时查看代码什么的,非常方便)如下:
<a target="_blank" href="http://app.weibo.com/t/feed/6vtZb0" rel="nofollow">微博 weibo.com</a>

因此决定将pattern写为patternw = r'weibo.com'

通过
h = urllib.request.urlopen(url)
return h.read()

可以实现将页面内容读取为字符串。这样查找整个网页的字符串一一比对,即可找到有多少微博是发自“weibo.com”的。

具体实现代码如下:

#coding=utf-8
#从新浪微博中抓取数据判断新浪客户端的使用情况
#只简单示意,找出了发自网页、iPhone和vivo的数量
#copyright@穆沛

#<a target="_blank" href="http://app.weibo.com/t/feed/6vtZb0" rel="nofollow">微博 weibo.com</a>
#<a target="_blank" href="http://weibo.com/" rel="nofollow">晴小编iPhone 6s Plus</a>

import urllib.request
import re

 #将网页转为字符串
def downloadPage(url):
    h = urllib.request.urlopen(url)
    return h.read()

def getData(content):
    content = content.decode('utf-8')
    i = 0
    w = 0
    e = 0
    #来自微博网页的数量
    patternw = r'weibo.com'
    web = re.compile(patternw)
    wurls = re.findall(web, content)
    for url in wurls:
            w += 1
    print("w = %d"%w)

    #来自iPhone的数量
    patterni = r'iPhone'
    iph = re.compile(patterni)
    iurls = re.findall(iph, content)
    for url in iurls:
            i += 1
    print("i = %d"%i)

    #来自vivo的数量
    patterne = r'vivo'
    oth = re.compile(patterne)
    eurls = re.findall(oth, content)
    for url in eurls:
            e += 1
    print("e = %d"%e)


content = downloadPage("http://s.weibo.com/weibo/%E4%BC%A6%E6%95%A6%E5%A5%A5%E8%BF%90%E4%BC%9A")
getData(content)

写的有点简单粗暴,我相信有更好的写法,欢迎与我交流。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值