论文要开题,想了老久的要写的内容,结果发现被人家换个名字全部写完了。吐了两天的血了。。。
回归正题,向右老师布置了第一个作业,爬取简书七日热门的
1.用户
2.标题
3.阅读量
4.评论量
5.获赞量
6.打赏数
7.文章发表时间
跟前面的爬异步加载的文章是一样的,就是要找出真实的网页地址
可以看到,加载的越多,URL就越长,这没法构建啊!
加载到最后,看到了第一行,把它复制到浏览器里,看到了什么? 大声告诉我你看到来了什么?
是的,这就是我们要的了。那就没问题了,老套路走起。
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)
爬取结果如图