# 网络爬虫爬取起点中文网完本榜小说500部
# 四步,分步操作,不易出错
# 所需要获取的数据:书名 、作者、网址、类型、主要介绍、作品信息 from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法request
from lxml.etree import * #调用包
import pickle #
import time
import pickle,fake_useragent
# 第一步,将25页起点完本榜的每部小说的名字和相对应的链接写入txt文件中 # arr=[]
# url0='https://www.qidian.com/rank/fin?page='
# urls=[ url0+str(i) for i in range(1,26)]
#
#
# def aa(link):
# time.sleep(1)
# print("正在爬取:%s"%link) #提示信息可以实时看到爬取信息
# with urlopen(link) as html: # 在html中打开爬取的数据
# text = html.read().decode("utf-8")# 读取并且解码数据
# doc =HTML(text) #解析html etree这是lxml中的方法
# url=doc.xpath("//div[@class='book-img-text']/ul/li/div[@class='book-mid-info']/h4/a/@href")
# name=doc.xpath("//div[@class='book-img-text']/ul/li/div[@class='book-mid-info']/h4/a/text()")
#
# arr.append(list(zip(name,url))) #用append方法将爬取数据添加到数组arr
# for link in urls:
# aa(link)
# print(arr)
# with open("完本榜.txt",'wb') as f: #打开本地文件“完本榜.txt”以写的方式,二进制
# pickle.dump(arr,f) #pickle包 # 第二步,将每部小说链接内的作者、类型、主要介绍、作品信息分别获取到并写入txt1文件中 # with open('完本榜.txt','rb') as f:
# arr1 = pickle.load(f)
# lists = []
# for arr2 in arr1:
# for name,url in arr2:
# url='https:'+url
# lists.append(url)
#
# print(lists)
# #获取代理开始(让网站不认为你在爬取数据)
# ua = fake_useragent.UserAgent()
# header = {
# 'User-Agent':ua.random
# }
# list2 = []
# def spider(url):
# time.sleep(1)
# # print("正在爬取:%s"%url) #提示信息可以实时看到爬取信息
# req = Request(url,headers=header)
# with urlopen(req) as html:
# text = html.read().decode()
# doc =HTML(text)
# # 作者
# pl1 = doc.xpath("//span/a[@class='writer']/text()")
# # 类型
# # print(pl1)
#
# pl2 = doc.xpath("//p/a[@class='red']/text()")
# # 主要介绍
# # print(pl2)
# #
# pl3 = doc.xpath("//p[@class='intro']/text()")
# # 作品信息
# # print(pl3)
# #
# pl4 = doc.xpath("//div[@class='book-info-detail']/div[@class='book-intro']/p/text()")
# # print(pl4)
#
# list2.append(list(zip(pl1, pl2,pl3,pl4))) # 用append方法将爬取数据添加到数组lists
# print(list2)
# for url in lists:
# mm=spider(url)
# with open("完本榜1.txt",'wb') as f: #打开本地文件“完本榜.txt”以写的方式,二进制
# pickle.dump(list2,f) #pickle包 # 第三步,将txt文件写入表格xls中 # import xlwt#(写入)
# wb=xlwt.Workbook() #创建表格对象
# ws=wb.add_sheet("完本榜")
# with open("完本榜.txt",'rb') as f:
# arr6=pickle.load(f)
# index=0
# for arr7 in arr6:
# for name,url in arr7:
# #序号
# ws.write(index,0,index+1)
# # title
# ws.write(index,1,name)
# ws.write(index,2,url)
# index+=1
# wb.save("完本榜.xls") # 第四步 将txt文件写入xls1中
import xlwt#(写入)
wb=xlwt.Workbook() #创建表格对象
ws=wb.add_sheet("完本榜1")
with open("完本榜1.txt",'rb') as f:
arr6=pickle.load(f)
index=0
for arr7 in arr6:
for pl1,pl2,pl3,pl4 in arr7:
#序号
# ws.write(index,0,index+1)
# title
ws.write(index,3,pl1)
ws.write(index,4,pl2)
ws.write(index,5,pl3)
ws.write(index,6,pl4)
index+=1
wb.save("完本榜1.xls")

网络爬虫&起点中文网完本榜500部小说的更多相关文章

  1. 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中

    爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...

  2. 什么是网络爬虫(Spider) 程序

    Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序.它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访 ...

  3. larbin是一种开源的网络爬虫/网络蜘

    larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人 Sébastien Ailleret独立开发.larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源.Lar ...

  4. 从0到1学习node之简易的网络爬虫

    本文地址: http://www.xiabingbao.com/node/2017/01/19/node-spider.html 我们这节的目标是学习完本节课程后,能进行网页简单的分析与抓取,对抓取到 ...

  5. 用Python写网络爬虫 第二版

    书籍介绍 书名:用 Python 写网络爬虫(第2版) 内容简介:本书包括网络爬虫的定义以及如何爬取网站,如何使用几种库从网页中抽取数据,如何通过缓存结果避免重复下载的问题,如何通过并行下载来加速数据 ...

  6. Java网络爬虫笔记

    Java网络爬虫笔记 HttpClient来代替浏览器发起请求. select找到的是元素,也就是elements,你想要获取具体某一个属性的值,还是要用attr("")方法.标签 ...

  7. 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘

    百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...

  8. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  9. NodeJs 入门到放弃 — 常用模块及网络爬虫(二)

    码文不易啊,转载请带上本文链接呀,感谢感谢 https://www.cnblogs.com/echoyya/p/14473101.html 目录 码文不易啊,转载请带上本文链接呀,感谢感谢 https ...

随机推荐

  1. 关于Xamarin、Qml、数据绑定、MVC、MVVM 相关的散讲

    关于Xamarin.Qml.数据绑定.MVC.MVVM 相关的散讲 SURFSKY 2017.02 最近又在学习Xamarin了?为什么是“又”?有几个利好消息,让我重新拾起它: ()微软去年收购了X ...

  2. sql 与 mysql

    my sql 中=和!=运算符是不起作用的:

  3. 练手——用Python写的时间戳转换为北京时间的小工具

    #北京时间需加上8小时bj = 8*3600 def time_stamp(times):    #一天总秒数    nonDaySeconds = 24*3600    leapmonths = [ ...

  4. python源码为何都是pass

    最近看Python代码  按照一个函数递进的看下去,最后发现,遇到很多源码什么逻辑都没写,仅仅以一个pass  结尾          但却能得到应该得到的结果,这点真的很奇怪,上网查找后 觉得下面的 ...

  5. Jenkins 配置git

    点击"新建任务"创建一个自用风格的项目 点击"源码管理",选择 git 系统管理 --> Global Tool Configuration<为访问 ...

  6. python numpy 科学计算通用函数汇总

    import numpy as np #一元函数 #绝对值计算 a = -1b = abs(a)print(b)输出: 1 #开平方计算 a = 4b = np.sqrt(a)print(b)输出: ...

  7. Java中的String为什么是不可变的? -- String源码分析

    众所周知, 在Java中, String类是不可变的.那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的.不能改变状态的意思是, ...

  8. HTTP简单解析

    一.简介 HTTP是一种基于TCP/IP的超文本传输协议,用于从WWW服务器传输超文本到本地浏览器. HTTP是一种基于客户端/服务器(C/S架构)的无状态.无连接.媒体独立的传输协议. HTTP是一 ...

  9. Blender学习笔记

    本文是根据B站上面,顺子老师的视频学习整理,建模部分,并未设计到渲染,内容整理所得 下载安装,可以直接在blender官网下载,建议下载最新版吧.因为每次软件的更新都会有新的东西出现,在使用中把你的心 ...

  10. C# Winform 中DataGridView 实现单元格输入下拉框功能

    https://blog.csdn.net/ad13adsa/article/details/82108969 private void dataGridViewX1_EditingControlSh ...