抓取biqukan
#python3.7
'''
功能:实现www.biqukan.com/1_1094/5403177.html小说下载为txt
v1.0
'''
import requests,sys,time
from lxml import etree
##0.获取所有章节url
def get_url_list(catalog_url):
res=requests.get(catalog_url)
#time.sleep(1)
if res.status_code==200:
text=res.text
html=etree.HTML(text)
hrefs=html.xpath('//div[@class="listmain"]/dl/dt[2]/following-sibling::*/a/@href')
#print('hrefs')
return hrefs
return None ##1.获取页面
def get_one_page(url):
res=requests.get(url)
#time.sleep(1)
if res.status_code==200:
return res.text
return None ##2.解析页面
def parse_one_page(text):
html=etree.HTML(text)
title=html.xpath('//div[@class="content"]/h1//text()')
content=html.xpath('//div[@class="showtxt"]//text()') #去掉换行
contents=''.join(content).replace('\xa0'*8,'\n'*2)#把列表转换为一整段文本,并把8个空格换为2个换行
#print(title,contents) #print(title)
return title,contents #返回多个参数,相当于返回一个元组return(title,content) ##3.保存内面
def write_to_file(title,contents):
with open('一念永恒.txt','a',encoding='utf-8')as f:
f.write(title[0]+'\n'+contents+'\n') #for content in contents:
# f.write(content) ##主函数
def main():
#0.获取章节列表的网址
catalog_url='https://www.biqukan.com/1_1094/'
urls=get_url_list(catalog_url)
#print(urls)
#1.把网址传入详情抓取页面,并保存
for i in range(len(urls)):
rel_url='https://www.biqukan.com'+urls[i]
print(rel_url)
text=get_one_page(rel_url)
#接收2步return的多个参数写法a,b=(x,y)
title,contents=parse_one_page(text)
#print(title,contents)
#写入txt
write_to_file(title[0],contents)
#显示下载进度
sys.stdout.write(" 已下载:%.3f%%" % float(i/len(urls)) + '\r')
sys.stdout.flush() ##执行入口
if __name__=='__main__':
main()
抓取biqukan的更多相关文章
- 【爬虫】biqukan抓取2.0版
#!python3.7 import requests,sys,time,logging,random from lxml import etree logging.basicConfig(level ...
- 笔趣看小说Python3爬虫抓取
笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...
- 用WebRequest +HtmlAgilityPack 从外网抓取数据到本地
相信大家对于WebRequest 并不陌生,我们在C#中发请求的方式,就是创建一个WebRequest .那么如果我们想发一个请求到外网,比如国内上不了的一些网站,那么该怎么做呢? 其实WebRequ ...
- Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)
概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868 ...
- [转]Fiddler抓取Android真机上的HTTPS包
此篇文章转载自:http://blog.csdn.net/roland_sun/article/details/30078353 工作中经常会需要对一些app进行抓包, 但是每次默认都是只抓http请 ...
- 爬虫技术 -- 进阶学习(十)网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)
最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决定试一试~ 于是到https://www.nuget.org/packages/Scrapy ...
- Phantomjs+Nodejs+Mysql数据抓取(1.数据抓取)
概要: 这篇博文主要讲一下如何使用Phantomjs进行数据抓取,这里面抓的网站是太平洋电脑网估价的内容.主要是对电脑笔记本以及他们的属性进行抓取,然后在使用nodejs进行下载图片和插入数据库操作. ...
- 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务
上周学习了BeautifulSoup的基础知识并用它完成了一个网络爬虫( 使用Beautiful Soup编写一个爬虫 系列随笔汇总 ), BeautifulSoup是一个非常流行的Python网 ...
- 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(3): 抓取amazon.com价格
通过上一篇随笔的处理,我们已经拿到了书的书名和ISBN码.(网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(2): 抓取allitebooks.com书籍信息 ...
随机推荐
- BZOJ3613 南园满地堆轻絮 二分/贪心
正解:贪心 解题报告: 传送门! 这题似乎是可以二分水过的,,,但数据可以加强一下就能简单把二分卡住了,或者修改下空间限制什么的反正就很容易能卡住 所以这里介绍一个优秀的贪心做法,O(n)的时间复杂度 ...
- 用A标签实现页面内容定位 点击链接跳到具体位置
经常在维基百科等网站看到目录列表,点击链接会跳到具体的位置,小美眉一直在问是怎么做到的,其实挺简单的,用A标签实现页面内容定位就行了.实例参考微信营销理论手册的目录. 首先用A标签定义目录的链接. & ...
- 教你一步步composer安装Magento2.3
以前外贸建站一直用zencart,这段时间ytkah比较有时间,就决定用magento来创建一下站点.magento不像普通的程序一样下载就可以直接安装,需要借助composer安装,还没没compo ...
- css垂直居中怎么设置?文字上下居中和图片垂直居中
css 居中分css垂直居中和css水平居中,水平居中平时比较常用,这里我们主要讲css上下居中的问题.垂直居中又分为css文字上下居中和css图片垂直居中,下面我们就分别来介绍一下. css文字上下 ...
- InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式
InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...
- 015-线程同步-synchronized几种加锁方式、Java对象头和Monitor、Mutex Lock、JDK1.6对synchronized锁的优化实现
一.synchronized概述基本使用 为确保共享变量不会出现并发问题,通常会对修改共享变量的代码块用synchronized加锁,确保同一时刻只有一个线程在修改共享变量,从而避免并发问题. syn ...
- 【BFS宽度优先搜索】
一.求所有顶点到s顶点的最小步数 //BFS宽度优先搜索 #include<iostream> using namespace std; #include<queue> # ...
- Element-table-formatter格式化数据
1.formatter 用来格式化内容 对table的值进行处理.Function(row, column, cellValue, index){} 使用formatter需要注意以下几点: ...
- Trie树(转:http://blog.csdn.net/arhaiyun/article/details/11913501)
Trie 树, 又称字典树,单词查找树.它来源于retrieval(检索)中取中间四个字符构成(读音同try).用于存储大量的字符串以便支持快速模式匹配.主要应用在信息检索领域. Trie 有三种结构 ...
- 1A
#include <iostream> using namespace std; int main() { long long n, m, a, r, c; cin>>n> ...