python爬虫-模拟登陆新浪微+博爬取感兴趣人的所有信息

48 阅读6分钟

return True

else:

return False

def getusermessage(html):

'''

获取用户信息,包括头像,姓名。粉丝 :param html: :return:

''' user = {}

bs = bs4.BeautifulSoup(html,"lxml")

user["姓名"] = bs.find_all("h1",class_="username")[0].text

user["头像"] = bs.find_all("p",class_="photo_wrap")[0].find_all("img")[0]["src"]

user["认证"] = bs.find_all("div",class_="pf_intro")[0]["title"]

messagebox = bs.find_all("div",class_="WB_innerwrap")

messages = messagebox[0].find_all("td",class_="S_line1")

for message in messages:

title = message.find_all("span",class_="S_txt2")[0].text

content = message.find_all("strong",class_="W_f16")[0].text

user[title] = content

print(user)

return user

def getweibo(filename,html):

'''

获取一个页面上的所有信息,包括每一条微博的内容,转发,评论,点赞数量 ''' file = open(filename,"a",encoding="utf-8")

beautifulsoup = bs4.BeautifulSoup(html,"lxml")

weibos = beautifulsoup.find_all("div",class_="WB_cardwrap WB_feed_type S_bg2 ") #获得用于显示微博的父节点

weibonum = 0 #计算该页微博数量

for weibo in weibos:

#对每一个微博父节点进行处理

weibotext = weibo.find_all("div",class_ = "WB_text W_f14") #获取微博文本内容

message = weibotext[0].text.replace(" ","") #取出文本中的所有空格

weibonum+=1 #微博数量+1

file.write("\n第"+str(weibonum)+"条微博内容是:"+message+"\n")

weibopics = weibo.find_all("div",class_="WB_media_wrap clearfix") #获取用于显示图片的标签

if len(weibopics) != 0: #判断标签是否存在

pics = weibopics[0].find_all("img") #获取该标签中的所有图片

for pic in pics:

file.write(pic["src"]+"\n")

weibomessages = weibo.find_all("div", class_="WB_feed_handle") # 获取微博信息父节点

weibomessagecontents = weibomessages[0].find_all("a", class_="S_txt2") #获取用于显示微博信息的节点(包括转发,评论,点赞数量)

for weibomessagecontent in weibomessagecontents[1:]: #分别获取信息

contents = weibomessagecontent.find_all("em")

file.write(contents[1].text+" ")

file.close()

print("成功存储一个页面的微博")

return weibonum

def getpageurl(url,num):

'''

根据一个用户的第一页获取后续的url www.weibo.com/u/185800266… www.weibo.com/u/185800266…

weibo.com/leehom?refe… weibo.com/leehom?is\_… 通过分析指导,page应该是表示的页面,is_all和is_hot应该对应的是热门微博和全部微博 ''' preurl = url.split("?")

preurl = preurl[0]

pageurl = preurl+"?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page="+str(num)+"#feedtop"

return pageurl

def spider(url,username,password):

num = 0;

browser = login(**"weibo.com/login.php"*…)

print("开始获取第1页的微博")

html = getweibohtml(browser,url)

file = open("f:****\\****xuanzi.txt","a",encoding="utf-8")

user = getusermessage(html)

for key in user.keys():

file.write(key+":"+user[key]+"\n")

file.close()

num += getweibo("f:****\\****xuanzi.txt",html)

print("获取第1页的微博成功")

page = 1;

while True:

page+=1

pageurl = getpageurl(url,page)

print(pageurl)

html = getweibohtml(browser, pageurl)

if has_source(html):

print("开始获取第"+str(page)+"页的微博")

num += getweibo("f:****\\****xuanzi.txt",html)

else:

return

return num

if __name__ =="__main__":

#browser = login("weibo.com/login.php",…")

'''

for cookie in cookies: if cookie["name"] == "_s_tentry": log_cookie = cookie break ''' ''' getweibohtml("www.weibo.com/u/185800266…", browser) ''' #print(has_source(browser,"www.weibo.com/u/185800266…"))

#file = open("f:\\test5.html","rb").read() #html = file.decode("utf-8","ignore") #getweibo(html)

#url = getpageurl("weibo.com/dasima315?s…", 4) #print(url) #num = spider("www.weibo.com/u/185800266…", "15271183269", "f43312626") #print("一共获取"+str(num)+"条微博")

spider("www.weibo.com/u/185800266…")

轩子局二兔的微博一共有21页,932条,以下是一部分爬取到的文件内容

姓名:轩子巨2兔

头像:tvax3.sinaimg.cn/crop.9.0.49…

认证:斗鱼直播平台签约主播

关注:293

粉丝:503619

微博:932

第1条微博内容是:

庆祝微博40万关注转发这条骚气的微博,抽5人送出100元红包加一段私人定制音频​​​​

wx3.sinaimg.cn/orj360/6ebe…

4333  1810  3644  

第2条微博内容是:

来斗鱼快两个月了,昨夜斗鱼粉丝破了100万。黑粉很失望,他们竭尽全力却无法阻止。不膨胀,继续努力做好声音!为回馈百万轩子大军,抽5人送出100元红包和一段专属音频,转发即可,截止至3月25日24点。​​​​

wx2.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

4431  1768  3184  

第3条微博内容是:

“不知尬舞”​​​​

wx2.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx2.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

256  1281  5533  

第4条微博内容是:

这次斗鱼的美食节目因故取消了,但不影响真爱粉的福利。转发抽5人送100网费​​​​

wx2.sinaimg.cn/thumb150/6e…

wx2.sinaimg.cn/thumb150/6e…

wx2.sinaimg.cn/thumb150/6e…

wx2.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx2.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

1929  1118  3457  

第5条微博内容是:

小二,上硬菜​​​​

wx2.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

815  1372  4269  

第6条微博内容是:

我是俏皮猫女郎​​​​

wx1.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

413  1179  4193  

第7条微博内容是:

不知火舞第二弹。(小剧场剧本、情感问题征稿,邮箱191625304@qq.com)​​​​

wx3.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

207  1265  4124  

第8条微博内容是:

王者荣耀.妲己cos第一弹​​​​

wx3.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

159  936  3684  

第9条微博内容是:

包子可爱吗​​​​

wx4.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

75  1079  3008  

第10条微博内容是:

妲己第二弹愚人节快乐!​​​​

wx1.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

92  627  3175  

第11条微博内容是:

上海的小伙伴猜猜我在哪​​​​

wx4.sinaimg.cn/orj360/6ebe…

15  628  3225  

第12条微博内容是:

不穿丝袜会死星人​​​​

wx1.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

wx1.sinaimg.cn/thumb150/6e…

wx4.sinaimg.cn/thumb150/6e…

61  562  3079  

第13条微博内容是:

我觉得这个吊带好看,另外谁的弟弟有多动症的话可以来听我的直播​​​​

wx3.sinaimg.cn/thumb150/6e…

wx3.sinaimg.cn/thumb150/6e… wx1.sinaimg.cn/thumb150/6e… 61  599  2832  

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

了解详情:docs.qq.com/doc/DSnl3ZG…