python抓取新浪微博配图

  看着女神微博,总觉得女神微博的哪一张照片都好看,于是想用脚本把她微博相册中的微博配图全部抓下来。

  一开始打开微博配图网页,打开开发者工具,查看网页源代码。其后,我直接右键查看网页源代码,发现网页源代码和开发者工具下看见的不一样,其中应该是浏览器加载了js,开发者工具看到了更多。因为爬虫的话,首选移动端,于是我打开移动端网页查看,这里面两者就是一样的。但是移动版照片好小,但是通过和网页版的比较,发现图片的地址有一定的关系,地址栏uuid一样,这就好办多了。

  分析完,剩下的就是编码实现了,虽然学过Ruby,但是听说爬虫还是选择Python比较好,于是一边看语法,一边写代码。下面是源代码,其中技术实现分为主要三点:

  1.登录。这里我直接用浏览器的Cookie登录,没有提交表单,省了不少代码,而且模拟表单登录,过一段时间可能不适用了,因为新浪会修改接口。其中把User-Agent参数带上,否则403。

        2.爬取移动版图片uuid拼凑出网页版大图片地址,其中移动版小图片没有logo,大图片的logo没有找到好的去除方式。

  3.下载图片到本地。

import urllib2     #2.7版本
import re
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6',
'cookie': ''}        #输入您的Cookie  在chrome浏览器请求网页时可以看到好长的字符串</span>
count = 0
page = 27      #微博相册页数,此处可以做优化,从1开始爬,直到没有。但是我为了按照时间来爬,就简单粗暴地处理了。
while page > 0:                                    
	req = urllib2.Request('http://weibo.cn/album/albummblog/?rl=11&fuid=3261134763&page='+ str(page), headers=headers) 
	r = urllib2.urlopen(req)
	data = r.read()
	p = re.compile(r'src="http://ww(.).sinaimg.cn/square/(.{32}).jpg" alt=')
	uuids = p.findall(data)
	urls = []
	for uuid in uuids:
		url = 'http://ww' + uuid[0] + '.sinaimg.cn/mw1024/' + uuid[1] + '.jpg'
		urls.append(url)

	urls.reverse()
	for url in urls:
		response = requests.get(url)
		if response.status_code == 200:
			count += 1
			f = open("/home/chen/mytest/crystal/"+ str(count) +".jpg", 'wb')
			f.write(response.content)
			f.close()

	page -= 1


<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最后,我想说,Python的代码书写格式我一开始还真没注意==</span>
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值