爬虫爬爬(二):下载小说全集

爬取小说全集:

选择url:http://www.136book.com/(还是选择136书屋)
随便选一篇已更新完的小说,我选的url:http://www.136book.com/huidao/
点击查看源码:
我们发现这些链接都在div id=“book_detail” class=“box1”,ol class="clearfix"盒子中li标签的href里面。
在这里插入图片描述
2. 思路:
1:新建一个记事本或者word文档,定向分配给它一个输出流。
2:套一个循环,获取我们需要的所有href
打开任意一个链接查看源代码发现每章的内容全都安排上了。
在这里插入图片描述
3:访问上述的href并获取装到我们的soup里。
4:首先输出每段循环里的标题text
5:源码查看每章的href我们发现文章都在div id="content"盒子里的p标签中,但全章分了很多个p,这时候我们再嵌套一个for循环让他.wirte输出每段p并加以换行。如果碰到HTML中有’空行我们直接跳过。
6:为了美观标题与文章之间我们空些行。因为可能运行起来较慢,我们再在第一层for循环末尾加上:print (“正在下载”+link.text)

  1. 代码:
from urllib import request#引入包
from bs4 import BeautifulSoup as bs#从bs4中引入BeautifulSoup
url='http://www.136book.com/huidao/'#定义一个url
response=request.urlopen(url)#请求建立连接,并获取响应内容
html_data=response.read()#读取
soup=bs(html_data,'lxml')#解析
soup_texts=soup.find('div',id='book_detail',class_='box1').find_next('div')#搜寻我们需要的内容位置(因为有两个名字,id,class相同的div,我们选择下面的)
f=open('G:\text\小说.txt','w')#输出流我们这里取了绝对路径
#f=open('./小说.txt','w')#这里取了相对路径
for link in soup_texts.ol.children:#第一层循环处理链接和标题
    if link!='\n':
        download_url=link.a.get('href')#读取li.a中的href
        download_response=request.urlopen(download_url)#请求建立连接,并获取响应内容
        download_html_data=download_response.read().decode('utf-8')#读取
        download_soup=bs(download_html_data,'lxml')#解析
        download_soup_texts=download_soup.find('div',id='content')
        f.write(link.text+'\n\n')
        for pra in download_soup_texts.children:
            if pra !='\n':
                if pra.name ==('p'):#第二层循环获取p标签的内容
                    f.write(pra.text)
                    f.write('\n')
        f.write('\n\n')
        print('正在下载'+link.text)
f.close()#关闭输出流

在这里插入图片描述结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值