data标签怎么爬虫_基于社交网络爬虫分析人物兴趣属性(一)

本文介绍了如何使用Python爬虫在免登录状态下抓取推特用户ID和推文。首先,通过搜索API获取用户ID,然后通过用户ID访问推文页面。面对异步加载的推文,分析网络请求,模拟AJAX请求获取更多内容。最终,通过正则表达式清理数据,得到纯净的推文文本。
摘要由CSDN通过智能技术生成

原创: Smity 合天智汇

推特爬虫爬取用户id和所有tweets(免登录,不使用api)
所有代码都已经发布在github上:
https://github.com/smityliu/spider
这次做的一个项目中涉及人物画像,做人物画像中兴趣属性很关键的一点就是要收集足够多的人物数据,基础工作就是进行爬虫的书写,收集数据集。对于一个社交网络来说,这里最大最实用的数据集合就是用户发布的帖子,因为里面的东西会关联到个人的兴趣爱好,甚至工作生活,从中做主题提取就可以大致的看出来人物在这个社交网络上所体现出来的一个兴趣属性。
经久不衰的话题----白帽子安全条款:不用爬虫爬取个人隐私!
所以我对于社交网络的选择标准:
1.国外社交网络-----推特;
2.只爬取网站上公开发布的用户信息。
由于模拟登录过于频繁还是会被网站封ip和账号,因此就想能不能实现免登录状态下的爬虫,爬取用户数据。

用户id爬取

推特上用来标识用户身份的标志可不是用户名,因为用户名是可以重复的,比如我搜索tolly这个用户,会发现有好多用户名叫tolly的。

bc9dd6aa6eeff8bade9f127e5742e298.png

但是他们的用户id却是唯一的:

4e58ea391625214627b837ae4d03d23f.png

红色框中的就是用户id。即使用户名相同,id也不会相同,那么我们来看一下用户主页:
这里随便找了一个国外小哥的主页,发现其实域名就是twitter.com + 用户id。

d2ca7703a7e5641aeea9e04ce15f5c95.png

因此我们首先要通过爬虫获取到用户id,才能进行下一步的数据爬取:
查询的api接口为:
https://twitter.com/search?f=users&vertical=default&q=smity&src=unkn

q参数输入的就是在你要查询的昵称大致是什么样子,也就是你在搜索框输入的东西。

如果我们直接requests请求这个连接,那么返回的东西就会是一堆带着html标签的文本,很难看。所以我们必须分析用户名在哪种标签里,id在哪种标签里。

36d1db9343e52040c6bfc443dccb9c6f.png
162ca045a512069349a8dd8ac16bb74b.png

上图就是爬取出来的带有很多html标签的文本,我们可以看到用户名是在

标签中的data-name参数中,然后data-screnn-name和下一段的

我选择的是data-name和span,个人观念是最好不在同一个标签中做正则提取,会有很多意想不到的问题。
因此这个正则这么写:
用户名:

data-name="(.*?) data-protected="false"Id:@(.*?)

所以加入正则以后的爬虫代码为:

import requestsimport reimport sys#查询用户名idurl='https://twitter.com/search?f=users&vertical=default&q='+sys.argv[1]+'&src=unkn'proxies={'http': 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值