鱼C论坛

 找回密码
 立即注册
查看: 2634|回复: 6

[已解决]爬虫爬小说

[复制链接]
发表于 2017-3-7 12:21:47 | 显示全部楼层 |阅读模式

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

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

x
下载的章节怎么能按章节保存
用的3.5 上代码


import os
from bs4 import BeautifulSoup
import re
import requests
import time

url = 'http://www.quanshu.net/book/1/1018/'   
   
def geturl(url):
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
    openurl = requests.get(url,headers = headers)
    text = openurl.content.decode('gbk',"ignore")
    #print(text)
    return text  #获取内容
def openurl(text):
    reg = r'<a href="(.*html)" title='#匹配章节网址
    rew = re.findall(reg,text)
    urlz = []
    #print(rew)
    for i in rew:
        urlz =  'http://www.quanshu.net/book/1/1018/'+i
        print ( 'http://www.quanshu.net/book/1/1018/'+i)#完整的网址章节目录
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
        openev= requests.get(urlz,headers = headers)
        textev = openev.content.decode('gbk',"ignore")
        soup= BeautifulSoup(textev,'html.parser')
        every = soup.findAll('div',{'class':'mainContenr'})#匹配每一章内容
        for t in every:
            with open ('D:\新建文件夹\小说.txt','a',encoding='utf-8') as f:
                    
                f.write(str(t.get_text())+'\n')#每一章写入小说TXT
                        
            
openurl(geturl(url))


#怎么能把下载的每一章节按章节保存   
最佳答案
2017-3-7 12:38:52
  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. from urllib.error import HTTPError
  4. import os


  5. def url_open(url):
  6.     try:
  7.         req=urllib.request.Request(url)
  8.         req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \
  9.     (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")
  10.         response=urllib.request.urlopen(req)
  11.         html=response.read().decode("GBK")
  12.     except HTTPError as e:
  13.         html=None
  14.     return html


  15. def get_neirong(url):
  16.     p=[]
  17.     html=url_open(url)
  18.     soup=BeautifulSoup(html,"html.parser")
  19.     a1=soup.findAll("div",{"class":"novel_list"})
  20.     for i in a1:
  21.         a2=i.findAll("a")
  22.         for x in a2:
  23.             p.append(x.attrs["href"])
  24.     return p


  25. def save(plist,name,ur):
  26.     os.mkdir(name)
  27.     os.chdir(name)
  28.     for i in plist:     
  29.         url=ur.replace("index.html",i)
  30.         html=url_open(url)
  31.         soup=BeautifulSoup(html,"html.parser")
  32.         d=soup.findAll("div",{"class":"novel_content"})
  33.         title=soup.find("title")
  34.         for x in d:
  35.             with open(title.get_text(),"a",encoding="utf-8")as f:
  36.                 f.write(x.get_text().replace("\xa0"," "))
  37.             
  38.                            
  39. def down_sanwen():
  40.     name=input("名字:")
  41.     ur=input("网址:")
  42.     p=get_neirong(ur)
  43.     save(p,name,ur)


  44. if __name__=="__main__":
  45.     down_sanwen()
复制代码


这个是我很久以前专门为某个网站写的爬小说的脚本,就是按章节保存得。你可以看一下,具体的我自己都忘了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-3-7 12:38:52 | 显示全部楼层    本楼为最佳答案   
  1. import urllib.request
  2. from bs4 import BeautifulSoup
  3. from urllib.error import HTTPError
  4. import os


  5. def url_open(url):
  6.     try:
  7.         req=urllib.request.Request(url)
  8.         req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 \
  9.     (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")
  10.         response=urllib.request.urlopen(req)
  11.         html=response.read().decode("GBK")
  12.     except HTTPError as e:
  13.         html=None
  14.     return html


  15. def get_neirong(url):
  16.     p=[]
  17.     html=url_open(url)
  18.     soup=BeautifulSoup(html,"html.parser")
  19.     a1=soup.findAll("div",{"class":"novel_list"})
  20.     for i in a1:
  21.         a2=i.findAll("a")
  22.         for x in a2:
  23.             p.append(x.attrs["href"])
  24.     return p


  25. def save(plist,name,ur):
  26.     os.mkdir(name)
  27.     os.chdir(name)
  28.     for i in plist:     
  29.         url=ur.replace("index.html",i)
  30.         html=url_open(url)
  31.         soup=BeautifulSoup(html,"html.parser")
  32.         d=soup.findAll("div",{"class":"novel_content"})
  33.         title=soup.find("title")
  34.         for x in d:
  35.             with open(title.get_text(),"a",encoding="utf-8")as f:
  36.                 f.write(x.get_text().replace("\xa0"," "))
  37.             
  38.                            
  39. def down_sanwen():
  40.     name=input("名字:")
  41.     ur=input("网址:")
  42.     p=get_neirong(ur)
  43.     save(p,name,ur)


  44. if __name__=="__main__":
  45.     down_sanwen()
复制代码


这个是我很久以前专门为某个网站写的爬小说的脚本,就是按章节保存得。你可以看一下,具体的我自己都忘了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 12:46:49 | 显示全部楼层
月黑风高夜2 发表于 2017-3-7 12:38
这个是我很久以前专门为某个网站写的爬小说的脚本,就是按章节保存得。你可以看一下,具体的我自己都忘 ...

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 12:48:52 | 显示全部楼层
月黑风高夜2 发表于 2017-3-7 12:38
这个是我很久以前专门为某个网站写的爬小说的脚本,就是按章节保存得。你可以看一下,具体的我自己都忘 ...

我刚才试了一下,是一个叫做 全本小说网 的网站,输入的网址是某本小说有具体章节的那个网页(其实也可以做的更方便的好像当时太懒了。。。),还可以用哦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 13:01:01 | 显示全部楼层
月黑风高夜2 发表于 2017-3-7 12:48
我刚才试了一下,是一个叫做 全本小说网 的网站,输入的网址是某本小说有具体章节的那个网页(其实也可以 ...

title=soup.find("title")
        for t in every:

              with open (title.get_text(),'a',encoding='utf-8') as f:
              f.write(t.get_text())
               
这样就解决了,谢谢,按章节给爬下来了           
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 13:03:58 | 显示全部楼层
月黑风高夜2 发表于 2017-3-7 12:48
我刚才试了一下,是一个叫做 全本小说网 的网站,输入的网址是某本小说有具体章节的那个网页(其实也可以 ...

怎么保存到D盘- - 下载上在桌面上。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 13:06:30 | 显示全部楼层
yy58710623 发表于 2017-3-7 13:03
怎么保存到D盘- - 下载上在桌面上。。

解决了
title=soup.find("title")
        for t in every:
      
            with open ('D:\新建文件夹\小说\%s.txt'%title.get_text(),'a',encoding='utf-8') as f:
                f.write(t.get_text())
               
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-25 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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