web scraper 爬取微博粉丝性别以及微博内容

一.粉丝性别

两个地方要注意:

1. 翻页,由于查看粉丝数限制,如果一直点下一页,会卡在第5页或者第10页,最后数据无法保存。所以还是在url里写上页数范围,这样最后数据可以保存:比如第一页网址:是  weibo.com/p/1005056932774899/follow?relate=fans&page=1#Pl_Official_HisRelation__59, 那直接改为page=[1-5],就可以访问前五页了。

2.过滤性别。性别图标不是text也不是image, 我想的办法是提取那一整行html,然后regex f*e*male,这样就能提取male或者female,如下图:

web scraper 爬取微博粉丝性别以及微博内容_第1张图片

 

二.微博内容:

1.翻页继续选择上述方法

2.展开全文的爬取:

先element scroll 滚到底:

web scraper 爬取微博粉丝性别以及微博内容_第2张图片

 

然后直接提取展开全文之前的所有微博内容,由于我想分开提取每条微博内容和时间,所以先抓取所有element,选的时候连续选中两个微博框就能分条选中所有微博了:

web scraper 爬取微博粉丝性别以及微博内容_第3张图片

 

在这个all目录下创建两个selector,一个提取text,一个提取时间。如果年份是当前年份,微博会自动忽略年份,我想要完整时间,所以没有直接提取时间text,而是提取时间那一行html,然后利用正则匹配提取完整时间 [0-9]{4}(\-[0-9]{2}){2}\ [0-9]{2}\:[0-9]{2}……(ps:这个应该有更简单的正则,但是不太熟练不会)。

web scraper 爬取微博粉丝性别以及微博内容_第4张图片

这样就能提取所有微博了到处为result1.csv。

但是对于需要展开全文的并没有处理。我处理方法是,在一页滚到底之后,再提取所有展开全文链接:

web scraper 爬取微博粉丝性别以及微博内容_第5张图片

在这个提取链接selector目录下,再新建两条selector,一个提取text,一个提取时间。爬出结果为result2.csv。

将第一份结果筛选删除包含展开全文的行,再把第二份粘贴到第一份,就最终得到所有微博。

 

 

 

 

 

你可能感兴趣的:(web scraper 爬取微博粉丝性别以及微博内容)