Python3网络爬虫之requests静态爬虫:《新笔趣阁》

本文介绍了如何使用Python3的requests和xpath进行网络爬虫,详细讲解了从分析网页、处理编码、提取数据、处理反爬到保存txt文件的全过程,以《新笔趣阁》全站小说为例,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《新笔趣阁》之全站爬虫

身为十年老书虫,学习爬虫不爬取全站小说网都对不起这个身份。我相信,对于很多人来说,小说是人的第二精神世界,是某些时刻精神慰问的佳肴。小编最喜欢的作者是实验小白鼠的作品,鼠大的作品主打玄幻和都市,若碰巧遇到鼠哥的粉丝可私信闲聊,哈哈。扯远了,回归正题,这次对《新笔趣阁》全站爬取小说并存入txt文件!!!

操作环境: Windows10、Python3.6、Pycharm、谷歌浏览器
目标网址: http://www.xbiquge.la/xiaoshuodaquan/ (新笔趣阁)

================================================

 1、分析网页

   首先对目标网站进行分析你需要爬取的内容。
在这里插入图片描述
  从图片可看出此属性mian标签下包含了六对同等级标签,经过分析了解clear属性的div标签是空白符,然而novellist属性的div标签才是包含各类小说信息的主要标签。每本小说对应着一个 li 标签,本站共有3000本小说。如下图:
在这里插入图片描述

 2、编码方式

  网页的编码方式品种多样,但主流还是utf-8,gbk,gb2312等等,如果源网页是GBK字节流,在程序端接收时的inputstream得到的字节数组的编码方式肯定是GBK字节流,即源网页是什么编码方式的字节流,程序端接收到的字节流的编码方式肯定是相同的。因此,只要在程序端解析出该流实际的编码方式即可将该流获得的源网页的字节数组转化成正常的编码显示形式。即算“解码–解析编码”的过程。

  查看字节流编码的方式这里介绍两种:
一:通过F12或者右键点击检查进入开发者模式,进入控制台(console)下面输入document.charset,回车即可查看。如下图:
在这里插入图片描述
二:右键点击“查看网页源码”,在源码网页的最上面找到meta的charset来获得编码。如下图:
在这里插入图片描述

请求目的网站:
headers = {
        # 请求头,伪造身份
    "Content-Encoding":"gzip",
    "Content-Type":"text/html",
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
# 目标链接
url = 'http://www.xbiquge.la/xiaoshuodaquan/'
response = requests.get(url=url,headers=headers)    # 请求目的网址
print(response)     # <Response [200]>
print(response.status_code)     # 返回状态码 200

  2.1、两种解码类型

    一、response.text
     类型: 返回str
     作用: 主要用于网页字符串的编码

    二、response.content
     类型: 返回bytes
     作用: 主要用于二进制数据类型,例:音频、视频、图片等

  2.2、万能编码

    自动识别网页的编码格式,但不建议使用这个。

response.encoding = response.apparent_encoding  # 万能编码

  2.3、指定编码

手动查看网页编码格式,并写入代码中,建议使用这种方法。

text = response.content.decode('utf-8') # 指定编码格式
print(text)

三种编码格式输出结果都是一致:
在这里插入图片描述

 3、xpath提取数据

   导入解析库parsel:import parsel  #pip install 库名 (下载安装第三方库)

import random
import requests
import parsel
import os
import time

headers = {
        # 请求头,伪造身份
    "Content-Encoding":"gzip",
    "Content-Type":"text/html",
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
# 目标链接
url = 'http://www.xbiquge.la/xiaoshuodaquan/'
response = requests.get(url=url,headers=headers)    # 请求目的网址
text = response.content.decode('utf-8') # 指定编码格式

# parsel将网页源码转化为Selector对象,以便后续的语法提取数据
selector = parsel.Selector(text)
lis = selector.xpath('//div[@i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值