资源简介
爬取17k小说网站的小说,根据start_url提供的开始页爬取小说的整页内容,可以在run方法中传入数值确定从当前页继续向下爬取多少页;
代码片段和文件信息
# coding=utf-8
‘‘‘
作者:Jguobao
QQ:779188083
email:jgb2010start@163.com
‘‘‘
import requests
from lxml import etree
import json
import re
class NovelSpider:
def __init__(self):
self.start_url = “http://all.17k.com/lib/book/2_0_0_0_0_0_1_0_1.html?“
self.url = “http://www.17k.com/list/1038316.html“ # “http://www.17k.com/chapter/2938105/36788407.html“
self.headers = {
“User-Agent“: “Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/67.0.3396.99 Safari/537.36“}
def parse_url(self url):
response = requests.get(url headers=self.headers)
if response.status_code != 200:
return None
return response.content.decode()
def get_detail_page(self html_str index=““):
if index != ““:
index = str(index) + “.“
html_str_etree = etree.HTML(html_str)
title = html_str_etree.xpath(“//div[@class=‘readAreaBox content‘]/h1/text()“)[0]
word = html_str_etree.xpath(“//div[@class=‘readAreaBox content‘]/div[@class=‘p‘]/text()“)
word = [“ “ + w.strip() + “\n“ if len(w.strip()) > 0 else None for w in word]
title = “\t\t\t“ + index + title.strip() + “\n“
for w in word[:]:
if w is None:
word.remove(w)
return title word[:-1]
def get_txt_name(self html_str):
html_str_etree = etree.HTML(html_str)
filename = html_str_etree.xpath(“//div[@class=‘Main List‘]//h1/text()“)[0] + ‘.txt‘ if len(
html_str_etree.xpath(“//div[@class=‘Main List‘]//h1“)) > 0 else “无名“
return filename
def get_url_list(self html_str):
item_list = []
html_str_etree = etree.HTML(html_str)
url_list = html_str_etree.xpath(“//dl[@class=‘Volume‘]//dd/a/@href“)
volume_list = html_str_etree.xpath(“//dl[@class=‘Volume‘]“) # 获取所有的卷 并且从卷下获取所有的卷标 章节
for volume in volume_list:
item = {}
item[‘卷标‘] = volume.xpath(“.//span[@class=‘tit‘]/text()“)[0]
item[‘info‘] = volume.xpath(“.//span[@class=‘info‘]/text()“)[0]
# 获取下面的所有的a标签
a_list_etree = volume.xpath(“./dd/a“)
a_list = []
for a in a_list_etree:
item2 = {}
title2 = a.xpath(“.//span[@class=‘ellipsis‘]/text()“)[0].strip()
item2[title2] = “http://www.17k.com“ + a.xpath(“./@href“)[0]
a_list.append(item2)
item[‘章节‘] = a_list
item_list.append(item)
# 根据a标签列表获取所有章节与对应的链接
url_list = [“http://www.17k.com“ + url for url in url_list]
return item_list
def save_txt(self txt_list filename):
with open(‘./txt/‘ + filename “a“ encoding=‘utf8‘) as f:
f.write(txt_list[0])
for wd in txt_list[1][:-2]:
f.write(wd)
def process_item_list(self item_list fi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6555 2019-01-20 14:29 xiaoshuo_spider.py
- 上一篇:socket编程常用API汇总
- 下一篇:UI设计视频资源
相关资源
- Xpath
- 发邮件自动回复本机IP
- CNN对特征矩阵的尝试
- pyqt5串口通讯助手
- 爬取招行外汇网站数据.pdf
- 爬取旅游景区网站数据.pdf
- 东方财富网公告爬取2
- webmagic爬虫项目
- CrawlSpider豆瓣图书爬虫
- MyImage_Sliding.zip
- sublimeREPL
- PyQt4多类图像显示和编辑
- 全网最全、人工补充的空气质量历史
- 爬虫代码实现.rar
-
集搜客-爬取数据xm
l转Excel - 蘑菇数据集
- pima印第安人糖尿病数据集
- KNN算法预测鸢尾花的种类,源码以及
- Tkinter代码195例-Tkinter编程代码
- 我自己做的一个基于Django的房屋出租
- 全球主要国家、省州、城市的数据库
- 基于.net的网络爬虫
- reportlab_userguide_pdf_高清含详细目录
- 2018年7月中科软与中航工业电子面试题
- Anaconda配套图标
- HttpHelper 爬虫应用类库 苏飞万能框架
- pyexcel技术文档
- AI项目-pacman
- setuptools
- PyPDF2模块和英文文档
评论
共有 条评论