我整理了大数据入门帖子200篇并用python分析了一下
人工智能首页 > AI资讯 > 正文

我整理了大数据入门帖子200篇并用python分析了一下

2018-07-29 阅读888次

  #000

  我通过数据挖掘入门,自学人工智能,python入门,nlp是什么,统计学入门,大数据入门,爬虫是什么意思,学习大数据要什么基础,数据分析师适合女生嘛,自学大数据该怎么入手等63个入门相关关键问题,找了200篇左右的高票入门帖子。我想通过python自动抓取这些帖子每天的访问量变化,分析出这些帖子的商业价值。

  那么我是怎么做的呢?

  #001

  因为我的帖子信息整理在excel里,我把它们存储成csv,以便python可以读取,要得到文章的阅读数,能通过python抓取网页,分析网页中的阅读数得到数字,所以要把csv里的url取到python里变成数组

  ```

  importcsv

  defget_all_urls():

  csv_reader=csv.reader(open("/.../url100.csv"))

  r=[]

  forrowincsv_reader:

  ifrow[1]=='url'orrow[1]=='':

  continue

  r.append(row)

  returnr


  ```

  每个网站文章页的格式不一样,意味着每个网站我们要写一个获取阅读数的方法对吧!所以我们需要一个辅助函数,拿帖子的url分析出这个帖子的域名,根据域名才能选择正确的获取方法哦~~

  ```

  defget_domain(url):

  domain=(url.split("/")[2])

  return{

  "www.jianshu.com":"简书",

  "blog.csdn.net":"CSDN",

  "www.zhihu.com":"知乎",

  "zhidao.baidu.com":"百度知道",

  "www.cnblogs.com":"CNblog",

  "www.sohu.com":"搜狐",

  "jingyan.baidu.com":"百度经验",

  "blog.jobbole.com":"伯乐",

  "www.douban.com":"豆瓣",

  }.get(domain,"未知"),domain


  ```

  OK!!我们的两个辅助方法都有了。

  #002

  本文的重头戏来了~~,核心的方法`get_read_count(url,domain)`,看看名字就知道了,根据url和域名获取文章点击数。咱的思路是这样的,第一天,获取一遍所有帖子的,第二天再获取一遍,3,4,5,6天。这样,每天的每个帖子的阅读数变化就出来啦。

  说着容易,做起来坑不少。

  *坑1我们是用requests模块get方法获取的网页全文,很多网站都会判断是不是正常的浏览器访问,咱们需要把headers写成跟浏览器请求一样,如下:


  ```

  headers={

  "User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_11_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36"

  }

  r=requests.get(url,headers=headers)

  #print(r.text)

 ```

  得到了网页内容,就该xpath上场了,先分析下阅读数的html特征,我们一般可以用xpath得到阅读数,比如:


  ```

  ifdomain=='blog.csdn.net':

  result=root.xpath("//span[@class='read-count']/text()")

  return(result[0].split(":")[1])


  ```

  *坑2但也有很多网站用了js的方法动态获取阅读数,此时就需要动一些小小的脑筋了,此处只放出一个小例子:


  ```

  ifdomain=='www.xxx.com':

  result=root.xpath("//span[@class='read-num']/text()")

  m=re.search(r'news_id:"d+',r.text)

  qid=(m.group().split(":"")[1])

  pvurl="https://v2.xxx.com/public-api/articles/"+qid+"/pv?callback=jQuery112406240523630131836_1532664955380&_=1532664955381"

  #print(pvurl)

  pv=requests.get(pvurl,{

  "User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_11_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36"

  ,"Referer":url

  })

  return(pv.text.split("(")[1].split(")")[0])


  ```

  基本思路就是这样:去找到这个文章的阅读数的请求,自己用python拼装请求,得到内容。

  #003

  好,锅也预备了,菜也该炒了。最后一步每天遍历访问一下:


  ```

  urls=get_all_urls()

  #print(urls)

  foriinrange(len(urls)):

  title=urls[i][0]

  url=urls[i][1]

  #print(url)

  doaminName,domain=(get_domain(url))

  count=(get_read_count(url,domain))

  print(url+","+doaminName+","+count)


  ```

  #004

  新鲜的数据来了~~~

  汇总!我整理了大数据入门帖子200篇并用python分析了一下

  最后得出总计1.6w多人一天来看过这些文章,价值多少呢?


随意打赏
WeixinPathErWeiMaHtml
ZhifubaoPathErWeiMaHtml