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 multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
Python中强大的命令行库click入门教程
Dec 26 Python
关于Python数据结构中字典的心得
Dec 04 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python多进程控制学习小结
Oct 31 Python
python实现PID算法及测试的例子
Aug 08 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
Python全局锁中如何合理运用多线程(多进程)
Nov 06 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php实现的http请求封装示例
2016/11/08 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现程序的单一实例用法分析
2015/06/03 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
Python能做什么
2020/06/02 Python
毕业生找工作推荐信
2013/11/21 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
新农村建设标语
2014/06/24 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
4种方法python批量修改替换列表中元素
2022/04/07 Python