首页 > 编程 > Python > 正文

Python制作爬虫采集小说

2020-01-04 17:58:12
字体:
来源:转载
供稿:网友

本文给大家分享的是使用Python制作爬虫采集小说的代码,非常的简单实用,虽然还是有点瑕疵,大家一起改改,共同进步

开发工具:python3.4

操作系统:win8

主要功能:去指定小说网页爬小说目录,按章节保存到本地,并将爬过的网页保存到本地配置文件。

被爬网站:http://www.cishuge.com/

小说名称:灵棺夜行

代码出处:本人亲自码的

 

 
  1. import urllib.request 
  2. import http.cookiejar 
  3.  
  4. import socket 
  5. import time 
  6. import re 
  7.  
  8. timeout = 20 
  9. socket.setdefaulttimeout(timeout) 
  10.  
  11. sleep_download_time = 10 
  12. time.sleep(sleep_download_time) 
  13.  
  14. def makeMyOpener(head = { 
  15. 'Connection''Keep-Alive'
  16. 'Accept''text/html, application/xhtml+xml, */*'
  17. 'Accept-Language''en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3'
  18. 'User-Agent''Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' 
  19. }): 
  20. cj = http.cookiejar.CookieJar() 
  21. opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
  22. header = [] 
  23. for key, value in head.items(): 
  24. elem = (key, value) 
  25. header.append(elem) 
  26. opener.addheaders = header 
  27. return opener 
  28.  
  29. def saveFile(save_path,txts): 
  30. f_obj = open(save_path,'w+'
  31. for item in txts: 
  32. f_obj.write(item+'/n'
  33. f_obj.close() 
  34.  
  35. #get_code_list 
  36. code_list='http://www.cishuge.com/read/0/771/' 
  37. oper = makeMyOpener() 
  38. uop = oper.open(code_list,timeout=1000) 
  39. data = uop.read().decode('gbk','ignore'
  40.  
  41. pattern = re.compile('<li><a href="(.*?)".*?>(.*?)</a></li>',re.S) 
  42.  
  43. items = re.findall(pattern,data) 
  44.  
  45. print ('获取列表完成'
  46. url_path='url_file.txt' 
  47.  
  48. url_r=open(url_path,'r'
  49. url_arr=url_r.readlines(100000) 
  50. url_r.close() 
  51. print (len(url_arr)) 
  52.  
  53. url_file=open(url_path,'a'
  54.  
  55. print ('获取已下载网址'
  56.  
  57. for tmp in items: 
  58. save_path = tmp[1].replace(' ','')+'.txt' 
  59. url = code_list+tmp[0] 
  60. if url+'/n' in url_arr: 
  61. continue 
  62. print('写日志:'+url+'/n'
  63. url_file.write(url+'/n'
  64. opene = makeMyOpener() 
  65. op1 = opene.open(url,timeout=1000) 
  66. data = op1.read().decode('gbk','ignore'
  67. opene.close() 
  68. pattern = re.compile('(.*?)<br />',re.S) 
  69. txts = re.findall(pattern,data) 
  70. saveFile(save_path,txts) 
  71.  
  72. url_file.close() 

虽然代码还是有点瑕疵,还是分享给大家,一起改进

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表