资讯专栏INFORMATION COLUMN

Python3 爬虫 requests+BeautifulSoup4(BS4) 爬取小说网站数据

taoszu / 3457人阅读

摘要:刚学爬虫不久,迫不及待的找了一个网站练手,新笔趣阁一个小说网站。继续学习,有改进方案的欢迎提出来,一起交流。

刚学Python爬虫不久,迫不及待的找了一个网站练手,新笔趣阁:一个小说网站。

前提准备

安装Python以及必要的模块(requests,bs4),不了解requests和bs4的同学可以去官网看个大概之后再回来看教程

爬虫思路

刚开始写爬虫的小白都有一个疑问,进行到什么时候爬虫还会结束呢?答案是:爬虫是在模拟真人在操作,所以当页面中的next链接不存在的时候,就是爬虫结束的时候。

1.用一个queue来存储需要爬虫的链接,每次都从queue中取出一个链接,如果queue为空,则程序结束
2.requests发出请求,bs4解析响应的页面,提取有用的信息,将next的链接存入queue
3.用os来写入txt文件
具体代码

需要把域名和爬取网站对应的ip 写入host文件中,这样可以跳过DNS解析,不这样的话,代码运行一段时间会卡住不动

"""
抓取新笔趣阁https://www.xbiquge6.com/单个小说
爬虫线路: requests - bs4 - txt
Python版本: 3.7
OS: windows 10
"""
import requests
import time
import sys
import os
import queue
from bs4 import BeautifulSoup 
# 用一个队列保存url
q = queue.Queue()
# 首先我们写好抓取网页的函数
def get_content(url):

    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",
        }

        r = requests.get(url=url, headers=headers)
        r.encoding = "utf-8"
        content = r.text
        return content
    except:
        s = sys.exc_info()
        print("Error "%s" happened on line %d" % (s[1], s[2].tb_lineno))
        return " ERROR "

# 解析内容
def praseContent(content):
    soup = BeautifulSoup(content,"html.parser")
    chapter = soup.find(name="div",class_="bookname").h1.text
    content = soup.find(name="div",id="content").text
    save(chapter, content)
    next1 = soup.find(name="div",class_="bottem1").find_all("a")[2].get("href")
    # 如果存在下一个章节的链接,则将链接加入队列
    if next1 != "/0_638/":
        q.put(base_url+next1)
    print(next1)
# 保存数据到txt
def save(chapter, content):
    filename = "修罗武神.txt"
    f =open(filename, "a+",encoding="utf-8")
    f.write("".join(chapter)+"
")
    f.write("".join(content.split())+"
") 
    f.close

# 主程序
def main():
    start_time = time.time()
    q.put(first_url)
    # 如果队列为空,则继续
    while not q.empty():
        content = get_content(q.get())
        praseContent(content)
    end_time = time.time()
    project_time = end_time - start_time
    print("程序用时", project_time)

# 接口地址
base_url = "https://www.xbiquge6.com"
first_url = "https://www.xbiquge6.com/0_638/1124120.html"
if __name__ == "__main__":
    main()
总结

结果蛮成功的吧,就是过程比较慢,程序用时1个半小时。。23333继续学习,有改进方案的欢迎提出来,一起交流。
QQ:1156381157

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42726.html

相关文章

  • Python爬虫基础

    摘要:爬虫架构架构组成管理器管理待爬取的集合和已爬取的集合,传送待爬取的给网页下载器。网页下载器爬取对应的网页,存储成字符串,传送给网页解析器。从文档中获取所有文字内容正则匹配后记爬虫基础知识,至此足够,接下来,在实战中学习更高级的知识。 前言 Python非常适合用来开发网页爬虫,理由如下:1、抓取网页本身的接口相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接...

    bang590 评论0 收藏0
  • python爬虫——爬取小说 | 探索白子画和花千骨的爱恨情仇

    摘要:先打开花千骨小说的目录页,是这样的。网页结构分析首先,目录页左上角有几个可以提高你此次爬虫成功后成就感的字眼暂不提供花千骨全集下载。打开盘查看花千骨文件。 知识就像碎布,记得缝一缝,你才能华丽丽地亮相。 1.Beautiful Soup 1.Beautifulsoup 简介 此次实战从网上爬取小说,需要使用到Beautiful Soup。Beautiful Soup为python的...

    newsning 评论0 收藏0
  • 关于爬虫解析数据的4种方式

    摘要:大奉打更人卖报小郎君这个人仙太过正经言归正传从红月开始黑山老鬼稳住别浪跳舞二解析数据是一个可以从或文件中提取数据的库。 目录 一、XPath解析数据 1、XPath解析数据 2、XML的树形结构 3、使用XPath选取节点 4、课堂案例 - 爬取起点小说网 二、BeautifulSoup解析...

    newtrek 评论0 收藏0
  • 新闻爬虫倒腾笔记

    摘要:新闻爬虫在列表页获取列表和时间材料,开发人员工具,插件,,安装包使用开发人员工具分析网站右键或打开,刷新载入打开页签,点选第二排的小漏斗,点入页面,因为新闻都有被检索到的需要,所以一般情况下都可以在第一个文档中找到需要的信息。 新闻爬虫1.0 在列表页获取列表和时间 材料:Pycharm,Chrome开发人员工具,infoLite插件,bs4,request 安装包 pip insta...

    April 评论0 收藏0
  • Python3 爬虫 scrapy框架 爬取小说网站数据

    摘要:上次用写的爬虫速度很感人,今天打算用框架来实现,看看速度如何。 上次用requests写的爬虫速度很感人,今天打算用scrapy框架来实现,看看速度如何。 爬虫步骤 第一步,安装scrapy,执行一下命令 pip install Scrapy 第二步,创建项目,执行一下命令 scrapy startproject novel 第三步,编写spider文件,文件存放位置novel/spi...

    王陆宽 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<