一、爬行对象及原因
我抓取的主要是医患冲突的微博,本来是想分析医患冲突的舆论。抓取的对象有用户名、文本、时间、转发号、赞号、评论号。爬行文本是一个可以用于情感分析或词频分析的云图。用户名可以用来统计官方报纸或者官方网站对此关注度最高的,可以做直方图。同时,转发、喜欢、评论的数量可以与时间匹配做定量分析或一定时间内的时间序列折线图。
二、爬虫步骤
1.请求页面
首先当然是进入我们亲爱的微博移动终端,不要问我为什么是移动终端,因为很简单,这真的是唯一一道菜。搜索关键字并右键单击查看元素。
点击右边的选项,选择其中的xhr,滑动页面的滚动条来加载新页面。这时,会出现一个表单,点击表单。
接下来是我们最喜欢的填码时间。
?{,User-(;intelmacosx 10 _ 12 _ 3)apple WebKit/537.36(KHTML,like gecko)Chrome/58 . 0 . 3029 . 110 safari/537.36,X-Requested-with : xmlhttprequest,} get _ page (page) : #获取页面参数的请求是我们需要在QueryString中填写参数参数,如下图{ container id :100103 type1q toType:all,queryVal:医患纠纷,特征码:20000320,luicode 33601000011,lfid :106003 type 1,Title:医患纠纷} URL base _ URL URL encode(params)try : response requests . get(URL,header headers)ifresponse . status _ code 200: print(page)return连接错误:打印(错误,参数)
2.解析页面
获取页面是解析页面最麻烦的一步。因为ajax返回json格式,所以使用pyquery特别方便。这部分需要具体分析获取json结构。我的经验是使用。如果嵌套在字典中,则首先使用get()方法,如果内容在列表中,则使用for循环。最后可以发现,我们想要获取的内容,首先大致是这样的。
{data:
{ cards:
[{card_group:
[{ mblog : }
id:text…
}]}
主要内容在mblog。我花了很多时间来分析这个。这真的是一个城市惯例。我想回家,
def parse _ page(JSON): ifjs : items JSON . get(data)。get(cards)for iiniitem : foritemini . get(card _ group): item item . get(mblog)IFitemnone : continue Weibo { } Weibo[id]item . get(id)Weibo[text]pq(item . get(text)).text()微博[name]item.get(用户)。get(screen _ name)ifitem . get(LonText)!None:#我们要注意的是,长长度的微博文本和长长度的文本在文本中会显示不完整,要判断,要抓取。微博[龙腾]item.get(龙腾)。get(龙腾内容)else : Weibo[龙腾]none print(Weibo[name])print(Weibo[龙腾])Weibo[attributes]item . get(attributes _ count)Weibo[comments]item . get(comments _ count)Weibo[reposts]item . get(reposts _ count)Weibo[time]item . get(created _ at)yield Weibo
3.存储在数据库中
最后一步相对简单
如果_ _ name _ _ main _ _ : client mongoclient()# connect mongodbclient[Weibo _ 1]# create database collection db[Weibo _ 1]# create table def save _ to _ mongo(result): #进入数据库ifcollection。insert(result): print(savedtomongo)for ageinrange(21,200): # cycle page time . sleep(1)#设置睡眠时间以防止被密封JSON get _ page(page)result sparse _ page(JSON)for result results 3360 save _ to _ mongo(result)print(result[time])
最终效果存储在mongodb中
在下一期中,我们将简要介绍如何从mongodb中提取文件,以及在文件开始时数据清理工作是否令人兴奋
代码主要指崔的知乎专栏。https://zhuanlan.zhihu.com/p/33877731非常感激
相关阅读
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除
标签: #微博历年热门事件