python爬虫路Python爬虫作业

简书7日热门crawl

2017-04-19  本文已影响49人  谁占了我的一年的称号

论文要开题,想了老久的要写的内容,结果发现被人家换个名字全部写完了。吐了两天的血了。。。

没活路了

回归正题,向右老师布置了第一个作业,爬取简书七日热门的
1.用户
2.标题
3.阅读量
4.评论量
5.获赞量
6.打赏数
7.文章发表时间
跟前面的爬异步加载的文章是一样的,就是要找出真实的网页地址

Paste_Image.png Paste_Image.png

可以看到,加载的越多,URL就越长,这没法构建啊!
加载到最后,看到了第一行,把它复制到浏览器里,看到了什么? 大声告诉我你看到来了什么?


Paste_Image.png

是的,这就是我们要的了。那就没问题了,老套路走起。

Paste_Image.png
import requests
from lxml import etree
import time
import csv

def crawl1(url):
   html= requests.get(url).content
   sel= etree.HTML(html)
   infos= sel.xpath('//ul[@class="note-list"]/li/div[@class="content"]')
   for info in infos:
       list1=[]
       author= info.xpath('div[@class="author"]/div/a/text()')[0]
       get_time = info.xpath('div[@class="author"]/div/span/@data-shared-at')[0].replace('T',' ')
       title = info.xpath('a[@class="title"]/text()')[0]
       read_num = info.xpath('div[@class="meta"]/a[1]/text()')[1][:-1]#这里要对爬下来的数据修改一下。
       comment_num = info.xpath('div[@class="meta"]/a[2]/text()')[1][:-1]
       point_num = info.xpath('div[@class="meta"]/span[1]/text()')[0]
       reward_num = info.xpath('div[@class="meta"]/span[2]/text()')
       if len(reward_num) ==0: # 有的文章是没有打赏的,就要判断一下了。
           reward_num = '无赞赏'
       else:
           reward_num = reward_num[0]
       print(author,get_time,title,read_num,comment_num,point_num,reward_num)
       list1.append(author),list1.append(get_time),list1.append(title),list1.append(read_num),list1.append(comment_num),list1.append(point_num),list1.append(reward_num)
       with open('d:\\简书.csv', 'a+') as f:
           f.write('author,get_time,title,read_num,comment_num,point_num,reward_num\n')
           f.write('{},{},{},{},{},{},{}'.format(author,get_time,title,read_num,comment_num,point_num,reward_num)+'\n')

if __name__=='__main__':
   for i in range(1,6):
       url= 'http://www.jianshu.com/trending/weekly?utm_medium=index-banner-s&utm_source=desktop&page=%s'%i
       print('正在处理第%d页'%i)
       crawl1(url)

爬取结果如图

Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读