python爬虫(二):三十行代码,五十万数据!

当你看了上一节中只能爬取一章的小说,而且还有许多不需要的字符时,是不是很不过瘾呢!这一节将一步一步分析,如何用30行不到的代码将小说章节全部爬下来,并且分章节保存进txt文件。

 

  1. 分析网址
http://www.biqugew.com/book/9/4446.html

这是小说第一章的网址,你可能发现不了什么特别的,

http://www.biqugew.com/book/9/4448.html

这是第二章网址,你可能就会发现什么了,当时多看几章的网址之后,你会发现这个网址会变的只是从4446到4448,下一章便是4450.这么一说是不是有思路了呢?

 

所以只需用循环将所有的网址拼接起来,然后让程序自己一个一个去爬即可!

# !/user/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'DF'
import requests
import re

# 第一章网址上的数字
base_num = 4446
# 打算爬多少章,手动修改
page = 100
for i in range(page):
    # 根据每章网址可知该数字每次加2
    num = base_num + i * 2
    # 拼接网址
    url = 'http://www.biqugew.com/book/9/%s' % (num) + '.html'

    # 使用requests的get方法获取response对象
    response = requests.get(url)
    # 转换编码格式,不然显示文字格式不对
    response.encoding = 'gbk'
    # 获取网页源码
    str_url = response.text

    # 将小说文字提取出来,
    str_novel = ''
    str_novel = str_novel + re.findall('<div id="content">([^(][\s\S]+?)</div>', str_url)[0]
    # 将小说此章标题提取出来
    str_title = ''
    str_title = re.findall('<h1>([^(][\s\S]+?)</h1>', str_url)[0]

    # 此时的str_novel中还有&nbsp和<br />等不需要的字符,继续剔除
    str_novel = str_novel.replace('&nbsp;', ' ')
    str_novel = str_novel.replace('<br />', '')

    # 然后将其保存进文件
    with open(str_title+".txt", "w", encoding='utf-8')as f:
        f.write(str_novel)

当你遇到不知道的函数时,不要慌!,因为并不多,而且只需百度一下,即可知道该函数可以做什么!

当你发现你代码文件夹下多出的小说文件,是不是很兴奋了呢。加油

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值