600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 爬取起点中文网站原创风云榜小说排行

爬取起点中文网站原创风云榜小说排行

时间:2019-07-08 10:13:01

相关推荐

爬取起点中文网站原创风云榜小说排行

一、查看网页

爬取数据的网页:/rank/yuepiao/male?gender=male&catId=-1&yearmonth=10

进入到网页我们发现这是一个动态加载的网页,当我们拖动下拉的时候,会有新的数据加载出来,同时网页url地址没有发生变化,如果我们直接爬取的话,只能爬取出几十行数据。这时候就需要别的方式来实现爬取所有的需要我们下拉才能爬取到的数据。

首先打开网页,F12打开开发者模式,拖动网页的下拉框,我们就会发现他动态加载数据的规律

/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=-1&yearmonth=10&pageNum=1该地址只是最后的pageNum在变化,我们可以自己传值进去,我们想要多少数据就有多少数据。

二、爬取并解析

利用request爬取html,发现它是由json编码的对象,所以我们用json.loads()来读取数据。

读取数据后提取我们需要的内容并存入文件就ok了。

三、源代码

import jsonimport requestsurl = '/majax/rank/yuepiaolist?_csrfToken=vwHSDjqNkaUOCWnWhu2mvDKXM9u9ETr58fpq3V9J&gender=male&catId=-1&yearmonth=10&pageNum='def getHtmlData(url):responseHtml = requests.get(url)hjson = json.loads(responseHtml.text) #读取页面的json数据,读出来相当于一个dict字典。print(hjson)a = hjson['data']['records']final_data = []for b in a:bName = b['bName'] # 书名bAuth = b['bAuth'] # 作者desc = b['desc'] # 简介cat = b['cat'] # 类型cnt = b['cnt'] # 字数rankCnt = b['rankCnt'] # 月票数singele_data = [bName, bAuth, cat, cnt, rankCnt, desc]final_data.append(singele_data)#把json数据写入到excel中output = open('qidiantop100.xls', 'a', encoding='utf-8') #打开该文件以追加的方式进行写入#output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')for i in range(len(final_data)):for j in range(len(final_data[i])):output.write(str(final_data[i][j])) # write函数不能写int类型的参数,所以使用str()转化output.write('\t') # 相当于Tab一下,换一个单元格output.write('\n') # 写完一行立马换行final_data.clear()output.close()def main(start, end):for i in range(start, end):if i == 1:output = open('qidiantop100.xls', 'a', encoding='utf-8')output.write('书名\t作者\t类型\t字数\t月票数\t简介\n')output.close()getHtmlData(url + str(1))#print(url + str(1))else:getHtmlData(url + str(i))#print(url + str(i))#time.sleep(2) #执行等待,防止短时间内多次访问被禁。if __name__ == '__main__':main(1, 6)print("爬取完成!")pass

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。