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学习笔记之os模块使用总结
Nov 03 Python
详解Python中的日志模块logging
Jun 19 Python
在Python程序中操作MySQL的基本方法
Jul 29 Python
python中range()与xrange()用法分析
Sep 21 Python
Python 实现随机数详解及实例代码
Apr 15 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
对于Python深浅拷贝的理解
Jul 29 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
Python类如何定义私有变量
Feb 03 Python
如何在django中实现分页功能
Apr 22 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
OpenCV-Python实现轮廓的特征值
Jun 09 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
php zend 相对路径问题
2009/01/12 PHP
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
js实现在字符串中提取数字
2013/11/05 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
python实现清屏的方法
2015/04/30 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python shutil模块用法实例分析
2019/10/02 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
C# Debug和Testing相关面试题
2015/10/25 面试题
办公室保洁员岗位职责
2013/12/02 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
保研推荐信范文
2015/03/25 职场文书
感恩主题班会教案
2015/08/12 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
推普标语口号大全
2015/12/26 职场文书