論文要開題,想了老久的要寫的內容,結果發現被人家換個名字全部寫完了。吐了兩天的血了。。。
沒活路了
回歸正題,向右老師布置了第一個作業,爬取簡書七日熱門的
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.lxweimin.com/trending/weekly?utm_medium=index-banner-s&utm_source=desktop&page=%s'%i
print('正在處理第%d頁'%i)
crawl1(url)
爬取結果如圖
Paste_Image.png