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实现一个简单的MySQL类
Jan 07 Python
Python中return语句用法实例分析
Aug 04 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
python人民币小写转大写辅助工具
Jun 20 Python
便捷提取python导入包的属性方法
Oct 15 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
python获取淘宝服务器时间的代码示例
Apr 22 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 str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
Django中使用Celery的教程详解
2018/08/24 Python
Python爬虫文件下载图文教程
2018/12/23 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
岗位职责定义及内容
2013/11/08 职场文书
医学类导师推荐信范文
2013/11/19 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
小学生安全保证书
2015/05/09 职场文书
2015年教师节感言
2015/08/03 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS