Skip to content

iStar/明星数据爬虫 #5

@cheenwe

Description

@cheenwe

#3

iStar/明星数据爬虫 2017-03

研究 Python 爬虫的时候, 学习了一个从淘宝 mm 上爬取数据的项目, 研究了下Python和MySQL 和 Redis 结合的例子.
后来想这为什么不使用 Ruby 进行数据的爬取呢? 数据存储, 多线程下载, 后台任务等一系列的都有现成的接口, 于是从”研究明星数据”开始着手.

需求及实现实现过程:

  1. 先确定了爬取信息网站 Yoka QQ Ent
  2. 使用 Nokogiri 自己解析明星数据信息, 把数据存储到数据库中
  3. 通过爬取和数据交叉更新, 总共约爬取了17488 条数据(国内外名人)
  4. 在寻找数据源的时候发现百度百科也是个很大的数据源,通过百度上的资料更新我爬取的明星数据, 于是开始爬取百度百科的页面把以前的数据全部进行更新了下.
  5. 在解析百科页面的时候发现每个页面都有个明星推荐的异步的接口, 通过一个人能推荐出20多人的数据, 通过这个网状的数据接口又在数据库中添加了几千条记录.
  6. 明星的名字和基本信息有了,想到以前写的一个根据明星名字调用百度图片接口获取 下载图片的接口, 添加了一张图片表把以前的接口调整了下, 支持存储明星的照片链接或者下载文件. 下载文件的过程中使用 sidekiq 进行异步下载, 晚上执行了个 Work ,下载了 2w 个人*50张的照片,总共下载了20G 的数据量.
  7. 在网上找爬取信息站点的时候想有没有其他的体育明星数据什么的,于是在网上找打 GJ Sport 公开信息查询接口, 里面有300W 的姓名, 性别, 运动项目等信息,在原来的明星数据基础上添加了爬取运动员信息的功能.
  8. 在爬取了半天的数据后突然发现 Nokogiri 直接打开页面的方法不能用了(估计是被网站管理员发现了),想了个解决办法, 先模拟请求再进行数据解析, 后面陆陆续续爬了3天, 除去重名等情况 数据库中总数据量已达到 310712 条

其他:

  1. 可以通过一个人请求获取20个人的信息的接口,一直请求下去组成网状的结构的代码还未理清楚如何实现, 用个小聪明,使用 sidekiq 异步队列进行每个接口的数据获取. 后续继续研究 这个网状类似爬虫结构的实现.
  2. 现在有了这么大的数据量的人名等信息, 可以研究做数据分析, 比如姓氏, 起名等等

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions