欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个简单的爬虫项目(爬取小说)

程序员文章站 2022-01-01 12:24:38
目录1.工具介绍2.详细代码介绍3.完整代码4.结果呈现1.工具介绍1.1我们所需要用到第三方库requests #爬虫所需要的最基本的第三方库re #正则表达式1.2安装的方式pip install requestspip install re1.3导入第三方库的方式import requestsimport re2.详细代码介绍首先请求我们要访问的页面的url(这里是随机选择的笔趣阁的一本小说爬取)url = 'http://www.b....
  • 目录
    1.工具介绍
    2.详细代码介绍
    3.完整代码
    4.结果呈现

1.工具介绍
1.1我们所需要用到第三方库
requests #爬虫所需要的最基本的第三方库
re #正则表达式
1.2安装的方式

pip install requests
pip install re

1.3导入第三方库的方式

import requests
import re

2.详细代码介绍
首先请求我们要访问的页面的url(这里是随机选择的笔趣阁的一本小说爬取)

url = 'http://www.biquge.info/10_10582/'

使用get方法请求数据对象,并给他一个响应参数

response = requests.get(url)

因为爬取的字体可能会发生乱码,所以我们在这里设置一下(这里的字体编译不一定要加上,如果下面请求文本的时候发生乱码就可以加上,或者直接设置为utf-8编码。)

response.encoding = response.apparent_encoding

设置一个参数接受我们请求响应的对象的文本内容

html_data = response.text

这里使用正则表达式(此处的 (.*?) 算是正则表达式里面的一个万能提取公式)提取我们的小说章节下的url以及标题,并构建一个列表

result_list = re.findall('<dd><a href="(.*?)" title=".*">.*</a></dd>', html_data)
top_10 = result_list[1:11]

在列表里面循环打印出每个章节的小标题以及获取到章节下的文本内容并打印输出

for top in top_10:
    all_url = 'http://www.biquge.info/10_10582/' + top

    response_2 = requests.get(all_url)
    response_2.encoding = response_2.apparent_encoding
    html_data_2 = response_2.text
    title = re.findall('<h1>(.*?)</h1>', html_data_2, re.S)[0]
    contend = re.findall('<div id="content"><!--go-->(.*?)</div>', html_data_2, re.S)[0]
    print(title, contend)

最后在当前目录下直接创建一个文件夹并以章节命名

 with open('三寸人间\\' + title + '.txt', mode='w', encoding='utf-8') as f:
        f.write(contend.replace('&nbsp;', '').replace('<br/>', '\n'))
        print('正在下载:', title)

3.完整代码

import requests
import re

url = 'http://www.biquge.info/10_10582/'

response = requests.get(url)
response.encoding = response.apparent_encoding
html_data = response.text

result_list = re.findall('<dd><a href="(.*?)" title=".*">.*</a></dd>', html_data)


top_10 = result_list[1:11]

for top in top_10:
    all_url = 'http://www.biquge.info/10_10582/' + top

    response_2 = requests.get(all_url)
    response_2.encoding = response_2.apparent_encoding
    html_data_2 = response_2.text

    title = re.findall('<h1>(.*?)</h1>', html_data_2, re.S)[0]
    contend = re.findall('<div id="content"><!--go-->(.*?)</div>', html_data_2, re.S)[0]
    print(title, contend)

    with open('三寸人间\\' + title + '.txt', mode='w', encoding='utf-8') as f:
        f.write(contend.replace('&nbsp;', '').replace('<br/>', '\n'))
        print('正在下载:', title)

4.结果呈现
一个简单的爬虫项目(爬取小说)

本文地址:https://blog.csdn.net/qq_43470809/article/details/111053617

相关标签: python