查看: 910|回复: 6

[其他] 爬取笔趣看小说

  [复制链接]
发表于 2020-1-19 18:47 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

  1. import os, requests, re
  2. from time import sleep
  3. from bs4 import BeautifulSoup
  4. from random import uniform


  5. # 网址解析
  6. def url_open(url):
  7.     headers = {}
  8.     headers[
  9.         "User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
  10.     response = requests.get(url, headers=headers)
  11.     response.encoding = "gbk"  # 该网站的编码格式:utf-8
  12.     html = response.text
  13.     return html
  14. def replaceNovel(content):
  15.     #用来进行页面排版,最后还是不太理想,不知道为什么没有向左对齐,第一行移动,下一行也移动
  16.     temp=content.replace('app2();','',2)
  17.     mode=r'\(https://www.biqukan.com.+wap.biqukan.com'
  18.     src=re.sub(mode,'',temp,flags=re.S)
  19.     final=src.replace('。  ','。\n    ',50)
  20.     return final
  21. # 小说内容获取与保存
  22. def get_and_save_data(novel_url):
  23.     chapters_url_all=[];
  24.     html_1 = url_open(novel_url)
  25.     soup_1 = BeautifulSoup(html_1, "html.parser")
  26.     nodes=soup_1.dl.find_all("dd")
  27.     novel_name=soup_1.find(class_="info").h2.text;
  28.     print(novel_name)
  29.     flag = False
  30.     prefix=re.findall(r'(.+)m/',novel_url)[0]
  31.     prefix=prefix+"m"
  32.     for node in nodes:
  33.         url=node.a["href"]
  34.         text=node.a.text
  35.         if text[0:3]=='第一章':
  36.             flag=True
  37.         if flag is True:
  38.             chapters_url_all.append(prefix+url)
  39.     #print(chapters_url_all)
  40.     # 逐页打开小说章节网址并获取内容保存
  41.     for each in chapters_url_all:
  42.         chapters_url =each
  43.         html = url_open(chapters_url)

  44.         soup = BeautifulSoup(html, "html.parser")
  45.         chapters_name = soup.find(class_="content").h1.text  # 抓取章节名称
  46.         print("正在下载《%s》:%s" % (novel_name, chapters_name))

  47.         # 小说内容抓取
  48.         content = soup.find("div", id="content").text
  49.         contents=replaceNovel(content)
  50.         #print(contents)
  51.         with open("%s.txt" % novel_name, "a", encoding="utf-8") as g:
  52.             g.write("\n" * 3 + "                               " + chapters_name + str("\n") * 3)
  53.             #g.write("    " + contents)
  54.             g.write(contents)
  55.         #break
  56.         slee_time = uniform(0.35, 0.75)
  57.         sleep(slee_time)

  58.     print("小说%s已下载完毕" % novel_name)
  59.     sleep(2)

  60. def main():
  61.     # 设置工作路径
  62.     path = r'd:\Pythontest'
  63.     if os.getcwd() != path:
  64.         if os.path.exists(path) == False:
  65.             os.mkdir(path)
  66.             os.chdir(path)
  67.         else:
  68.             os.chdir(path)
  69.     #这个地址取你要爬的小说地址,我在站内搜索结果查不到,只能通过去百度搜小说名,之后进入页面
  70.     root_url = "https://www.biqukan.com/73_74917/"
  71.     get_and_save_data(root_url)


  72. if __name__ == "__main__":
  73.     main()
复制代码


如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-1-19 18:47 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-1-19 18:51 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-1-19 19:07 | 显示全部楼层
谢谢大佬
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-1-19 19:36 | 显示全部楼层
好的,非常感谢
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-1-19 22:21 | 显示全部楼层
6666
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2020-1-20 01:42 | 显示全部楼层
感谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部