Python制作爬虫采集小说


Posted in Python onOctober 25, 2015

开发工具:python3.4
操作系统:win8
主要功能:去指定小说网页爬小说目录,按章节保存到本地,并将爬过的网页保存到本地配置文件。
被爬网站:http://www.cishuge.com/
小说名称:灵棺夜行
代码出处:本人亲自码的

import urllib.request
import http.cookiejar

import socket
import time
import re

timeout = 20
socket.setdefaulttimeout(timeout)

sleep_download_time = 10
time.sleep(sleep_download_time)
 
def makeMyOpener(head = {
 'Connection': 'Keep-Alive',
 'Accept': 'text/html, application/xhtml+xml, */*',
 'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
}):
 cj = http.cookiejar.CookieJar()
 opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
 header = []
 for key, value in head.items():
  elem = (key, value)
  header.append(elem)
 opener.addheaders = header
 return opener
 
def saveFile(save_path,txts):
 f_obj = open(save_path,'w+')
 for item in txts:
  f_obj.write(item+'\n')
 f_obj.close()
 
#get_code_list
code_list='http://www.cishuge.com/read/0/771/'
oper = makeMyOpener()
uop = oper.open(code_list,timeout=1000)
data = uop.read().decode('gbk','ignore')

pattern = re.compile('<li><a href="(.*?)".*?>(.*?)</a></li>',re.S)

items = re.findall(pattern,data)

print ('获取列表完成')
url_path='url_file.txt'

url_r=open(url_path,'r')
url_arr=url_r.readlines(100000)
url_r.close()
print (len(url_arr))

url_file=open(url_path,'a')

print ('获取已下载网址')

for tmp in items:
 save_path = tmp[1].replace(' ','')+'.txt'
 url = code_list+tmp[0]
 if url+'\n' in url_arr:
  continue
 print('写日志:'+url+'\n')
 url_file.write(url+'\n')
 opene = makeMyOpener()
 op1 = opene.open(url,timeout=1000)
 data = op1.read().decode('gbk','ignore')
 opene.close()
 pattern = re.compile('    (.*?)<br />',re.S)
 txts = re.findall(pattern,data)
 saveFile(save_path,txts)
 
url_file.close()

虽然代码还是有点瑕疵,还是分享给大家,一起改进

Python 相关文章推荐
Python使用正则匹配实现抓图代码分享
Apr 02 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python爬取网页转换为PDF文件
Jun 07 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
python根据url地址下载小文件的实例
Dec 18 Python
Python日志无延迟实时写入的示例
Jul 11 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
Python验证企业工商注册码
Oct 25 #Python
日常整理python执行系统命令的常见方法(全)
Oct 22 #Python
Python六大开源框架对比
Oct 19 #Python
Python脚本暴力破解栅栏密码
Oct 19 #Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 #Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
Oct 18 #Python
详解使用Python处理文件目录的相关方法
Oct 16 #Python
You might like
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
PHP 中常量的知识整理
2017/04/14 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
2009/11/04 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
Python实现模拟时钟代码推荐
2015/11/08 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
详解Python正则表达式re模块
2019/03/19 Python
python配置文件写入过程详解
2019/10/19 Python
Python 代码调试技巧示例代码
2020/08/11 Python
python中turtle库的简单使用教程
2020/11/11 Python
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
个人教师自我评价范文
2013/12/02 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
党员创先争优承诺书
2014/03/26 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
法人任命书范本
2014/06/04 职场文书
2015年大学生工作总结
2015/04/21 职场文书
详解Python中__new__方法的作用
2022/03/31 Python
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python