后端数据爬虫--Twitter

  • 1. 爬虫的目标
  • 2. 爬虫的思路
  • 2.1 步骤
  • 2.2 几个选择
  • 2.2.1 Scarpy+ Selenium
  • 2.2.2 没有使用Twitter API
  • 3. 爬虫网站分析
  • 3.1 网页结构分析
  • 3.2 user数据
  • 3.3 tweet数据
  • 4. 创建Scrapy爬虫框架


1. 爬虫的目标

在Twitter网站中爬取到大量的用户,并得到用户的基本信息和发布的推文,可以实现在某一话题中爬取用户及推文和根据用户名爬取用户主页的功能。

2. 爬虫的思路

2.1 步骤

①模拟浏览器向推特搜索网页发送GET请求。
②在显示结果的网页中,模拟浏览器不断下拉网页加载新的推文,直至无法加载更多。
③获取此时网页的源码,定位并解析出推文内容和用户信息。

2.2 几个选择

2.2.1 Scarpy+ Selenium

Scrapy是爬取为网站数据、提取结构性数据而编写的应用框架,在使用Scarpy框架的时候,计划使用Xpath匹配来代替正则,这样可读性更好,同时使用通过管道的方式存入数据库,比较灵活。
选择Selenium的原因是模拟浏览器进行爬虫可以避免被网站检测为爬虫,如果使用requests库直接发起请求的话可能会被识别为爬虫,这里的方法是使用Chromedriver模拟浏览器请求,然后查看请求的headers,并将其设置为requests的GET方法的headers参数。

2.2.2 没有使用Twitter API

推特自身的API限制诸多,免费API每次请求只能得到100条,只能得到最近7天的推文,数据量太小。

3. 爬虫网站分析

3.1 网页结构分析

python脚本 自动推特登录评论 推特怎么爬_数据


通过网页可以分析得到推文发布者的昵称,姓名,推文内容等信息,接下来进入到用户主页:

python脚本 自动推特登录评论 推特怎么爬_数据_02

3.2 user数据

在用户主页中,可以去爬取用户的简介、居住地、关注者、喜好的话题等信息,通过开发者工具进行分析并把爬取的数据打出来:
data = json.loads(response.text)

data = json.loads(response.text)
# 爬取用户
for item in self.parse_user_item(data['globalObjects']['users']):
     yield item
# 爬取推文
for item in self.parse_tweet_item(data['globalObjects']['tweets']):
     yield item
# print("--------------data['globalObjects']['users']---------------")
# print(data['globalObjects']['users'])
# print("--------------data['globalObjects']['tweets']---------------")
# print(data['globalObjects']['tweets'])

注释中的print方法用于查看获取的json数据,如得到的用户数据:

python脚本 自动推特登录评论 推特怎么爬_数据_03


可以利用的数据有用户id,用户昵称name,用户名字screen_name,用户位置location,用户简介description,用户头像url,用户的关注者friends_count,用户的粉丝following,用户注册时间created_at等内容。

3.3 tweet数据

对推文进行结果打印可以得到:

python脚本 自动推特登录评论 推特怎么爬_Selenium_04


从中可得到推文的id,推文创建时间created_at,推文发布者的id,推文的内容full_text,推文点赞数favorite_count等信息。

4. 创建Scrapy爬虫框架

python脚本 自动推特登录评论 推特怎么爬_API_05


①TweetCrawler.py:负责爬取网页的内容,并解析返回的html内容,从中提取我们需要的数据。

②items.py:使用Item类来结构化数据,以方便对数据的操作。Item 类是一个简单的容器,用来暂存被抓取到的数据。

③middlewares.py:主要处理引擎和下载器之间的响应请求。

④pipelines.py:管道,负责清洗和保存数据。

⑤settings.py:配置文件,可对mysql和selenium进行设置。

python脚本 自动推特登录评论 推特怎么爬_python脚本 自动推特登录评论_06