简单的新浪微博爬虫-Python版-(下载部分)---(上)

第一次写博客,mark一下。

以前没写过技术分享博客也是因为没什么好分享的,现在觉得有些经验和思考过程还是值得记录下来的;一则便于以后查阅,二则如果能给别人带来些许帮助,则无比幸甚。

这次是因为工作需要做一些市场声量的分析,需要爬取一些论坛内容,微博内容做数据分析,懒得找其他盈利性的网站购买,就自己研究了一下Python 爬虫,写出来一个小小的爬虫

爬虫主要分两大部分:

1,下载网页功能(就是把网页内容以html格式保存在txt文 本中)

2,从保存文本中解析出想要的内容(主要是用到BeautifulSoup,用过的都说好!新手提示:注意大小写!)

 

其它:其实爬虫的主要功能实现还是很简单的,因为主要任务不在获取数据上,对爬虫的学习只是一个入门,这里只是想要分享一下经验,代码。

主要是图个方便,代码很丑,不要笑话

-------------------------------------------------------------------

下面是爬虫的下载网页功能的代码:

简单解释一下工作原理:获取需要下载的url(一般我都是按照规则生成的)-->发起请求(带上cookies)-->保存返回的数据到指定目录下

#-*-coding;utf-8-*-
import requests,re,time,datetime
from bs4 import BeautifulSoup
cook={"Cookie":"#your cookies#"}
def main_load(url,sleeptime):  #主下载函数
    time.sleep(sleeptime)
    try:
        html=requests.get(url,cookies=cook).content  #获得请求结果
        path='D:\\weibo\\movie\\cyx+dy'              #保存下载内容到你指定的文件目录
        name=re.findall(r'(?<=keyword=).*',url)[0]   #截取url的一部分作为文件名
        filename=path+'\\'+name+'.txt'
        r=open(filename,'w')
        r.write(html)
        r.close()
        return True
    except:
        return False
def auto_get(url,main_load,shleeptime=3):          #如果请求不成功就等待一段时间,再次发起请求
    while not main_load(url,shleeptime):
        if shleeptime>20:
            break
        shleeptime += 5
        print 'enlarge sleep time:'+str(shleeptime)    
        
for i in range(1,4):                               #在网页中搜索结果,获得一个链接url,替换下面这个url,让
    #url='ime=20150101&endtime=20160501&sort=time&page='+str(i)
    url1='http://weibo.cn/search/mblog?hideSearchFrame=&keyword=%E9%AA%91%E8%A1%8C+%E7%88%B1%E6%83%85+%E5%85%AC%E8%B7%AF&advancedfilter=1&starttime=20150101&endtime=20160530&sort=time&page=1'
    print auto_get(url,main_load,shleeptime=3)

  几点说明:

1,我使用的验证方式是cookie,所以要使用这个爬虫程序必须获得自己的cookies,最开始我是想模拟登陆的,后来弄不起来就放弃了,直接用cookies省事。cookie可以在ie浏览器的临时文件夹中找到,有点坑。我是直接从

2,新浪微博wap端的搜索结果页面是有规则的,基本就是“固定开头+keyword+开始时间+结束时间+页数“的格式,本来这个过程是可以通过参数传递在请求中实现的,我太懒了。简单点就自己点下高级搜索,选好时间关键字,搜索出结果选下一页,在浏览器地址栏就能看见通用的地址格式了。其实只要换一下keyword就行了,中间那串“%E9%AA%91%E8“其实就是搜索关键字。

 

这个爬虫很丑,但是基本满足我自己的需求了。

后续:新浪微博wap只返回搜索的前100页,大概只有1000条结果,所以如果搜索内容太多后面的部分就没法获取了。我的解决办法就是缩短搜索日期,比如按月搜索。

 

 

 

 

转载于:https://www.cnblogs.com/nerverbesad/p/5543652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值