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文件操作之目录遍历实例分析
May 20 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
python版飞机大战代码分享
Nov 20 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
学习和使用python的13个理由
Jul 30 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
Python爬虫requests库多种用法实例
May 28 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 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中字符安全过滤函数使用小结
2015/02/25 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
如何实现JS函数的重载
2006/09/22 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
vuex实现简易计数器
2016/10/27 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
学习Vue组件实例
2018/04/28 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
Python中使用PDB库调试程序
2015/04/05 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
解决python运行启动报错问题
2020/06/01 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
文案策划专业自荐信
2014/07/07 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
详解Redis主从复制实践
2021/05/19 Redis
如何在python中实现ECDSA你知道吗
2021/11/23 Python
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
Oracle中日期的使用方法实例
2022/07/07 Oracle