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 27 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python的多维空数组赋值方法
Apr 13 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
Pytorch转tflite方式
May 25 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 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中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue的基本用法与常见指令
2017/08/15 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
python测试驱动开发实例
2014/10/08 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Python线程threading模块用法详解
2020/02/26 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
JSF界面控制层技术
2013/06/17 面试题
Ruby如何创建一个线程
2013/03/10 面试题
网络教育毕业生自我鉴定
2013/10/10 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
初任公务员培训心得体会
2016/01/08 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
Python实现批量自动整理文件
2022/03/16 Python