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 图片验证码代码分享
Jul 04 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
python 发送get请求接口详解
Nov 17 Python
python switch 实现多分支选择功能
Dec 21 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
常用的Python代码调试工具总结
Jun 23 Python
Django框架之路由用法
Jun 10 Python
pd.drop_duplicates删除重复行的方法实现
Jun 16 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 随机生成10位字符代码
2009/03/26 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
php查询操作实现投票功能
2016/05/09 PHP
基于jquery的滚动新闻列表
2010/06/19 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
python 捕获shell脚本的输出结果实例
2017/01/04 Python
tensorboard显示空白的解决
2020/02/15 Python
Python常用类型转换实现代码实例
2020/07/28 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
学生保证书范文
2014/04/28 职场文书
暑期学习心得体会
2014/09/02 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
2014年招生工作总结
2014/11/26 职场文书
贫困生证明范文
2015/06/16 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js
python执行js代码的方法
2021/05/13 Python
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
SQLServer中exists和except用法介绍
2021/12/04 SQL Server