鱼C论坛

 找回密码
 立即注册
查看: 1647|回复: 3

[作品展示] python 小说爬虫

[复制链接]
发表于 2020-5-11 17:04:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新人第一个python爬虫 求大佬改进改进
  1. # -*- coding:UTF-8 -*-

  2. import requests
  3. import re
  4. import unicodedata

  5. def get_novel_list_url():

  6.         global response
  7.         # 标记 response 为全局变量
  8.         global headers
  9.         # 标记 headers 为全局变量
  10.         headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'}
  11.         # 伪装响应头
  12.         response = requests.get(novel_url,headers=headers)
  13.         # 获取小说目录网页数据
  14.         response.encoding='UTF-8'
  15.         # 设置编码为 UTF8
  16.         global response_all
  17.         # 标记 response_all 为全局变量
  18.         response_all = response.text
  19.         # 将获取到的小说目录源码赋值给 response_all

  20. def get_novel_title():

  21.         global novel_title_
  22.         # 标记 novel_title 为全局变量
  23.         novel_title_ = re.findall(r'.html\' >.*?</a></dd>',response_all)
  24.         # 正则表达式过滤无关数据 获得标题

  25. def get_novel_text():

  26.         global novel_list_all
  27.         # 标记 novel_list_all 为全局变量
  28.         novel_list_all = re.findall(r'<dd><a href=.*?\' >',response_all)
  29.         # 正则表达式过滤无关数据 获得以下数据
  30.         # <dd><a href='/15/15003/6795760.html' >第一章 没白来</a></dd>
  31.         l = len(novel_list_all)
  32.         i = 1


  33.         for novel_list in novel_list_all:

  34.                 if i <= l:
  35.                 # 此处if用处 :完成下载破坏循环
  36.                         novel_list = novel_list.replace('<dd><a href=\'','')
  37.                         novel_list = novel_list.replace('\' >','')
  38.                         # 过滤无用数据
  39.                         novel_text_url = 'http://www.xbiquge.la' + novel_list
  40.                         # 构建每章小说的URL
  41.                         novel_text_code_ = requests.get(novel_text_url)
  42.                         # 获取小说每一章网页数据
  43.                         novel_text_code_.encoding='UTF-8'
  44.                         # 设置编码为 UTF8
  45.                         novel_text = novel_text_code_.text
  46.                         # 获取小说内容
  47.                         novel_text_ = re.findall(r'<div id="content">.*?<a href=',novel_text)
  48.                 else:
  49.                         break
  50.                


  51.                 for novel in novel_text_:
  52.                         if i <= l:
  53.                         # 此处if用处 :完成下载破坏循环
  54.                                 novel = novel.replace('    ',' ')
  55.                                 novel = novel.replace('<br />',' ')
  56.                                 novel = novel.replace('<p><a href=',' ')
  57.                                 # 过滤无用数据


  58.                                
  59.                         else:
  60.                                 break
  61.                         for novel_title in novel_title_:
  62.                                         if i <= l:
  63.                                         # 此处if用处 :完成下载破坏循环

  64.                                                 novel_title = novel_title.replace('</a></dd>','')
  65.                                                 novel_title = novel_title.replace('.html\' >','')
  66.                                                 novel_title = novel_title.replace('*','')
  67.                                                 novel_title = novel_title.replace('?','')
  68.                                                 novel_title = novel_title.replace('?','')
  69.                                                 # 过滤无用数据

  70.                                                 file = open(novel_title + '_.txt','a+')
  71.                                                 file.write(novel_title)
  72.                                                 file.write('\n')
  73.                                                 file.write(novel)
  74.                                                 file.write('\n')
  75.                                                 print(novel_title+'已下载至当前目录')
  76.                                                 # 以上为保存文件至当前目录

  77.                                                 i = i + 1
  78.                                         else:
  79.                                                 print ("已全部下载完成")
  80.                                                 break



  81. def main():
  82.         get_novel_list_url()
  83.         get_novel_title()
  84.         get_novel_text()







  85. if __name__=="__main__":
  86.         print ('------------------------------------------------')
  87.         b = input("输入(Y/y)进入下载小说\n")

  88.         if b == 'Y' or b == 'y':
  89.                 print ('------------------------------------------------')
  90.                 novel_url = input('请输入您要在新笔趣网下载小说的URL(http://www.xbiquge.la/):\n例如http://www.xbiquge.la/10/10489/"\n')
  91.                 print ('------------------------------------------------')
  92.                 print("---------------------正在下载---------------------")
  93.                 main()
  94.         else:
  95.                 print("已退出程序~")
复制代码




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 17:20:14 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-18 16:27:06 | 显示全部楼层
文件里面有&nbsp;&nbsp;&nbsp;&nbsp;能去掉吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-19 08:03:51 | 显示全部楼层
念念楚啊 发表于 2020-7-18 16:27
文件里面有&nbsp;&nbsp;&nbsp;&nbsp;能去掉吗

emmm可以自行用replace去除
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 21:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表