python爬取小说

python 爬取某阁小说

你想要的摸鱼来了

为了摸鱼方便,今天自己写了个爬取某阁小说的程序,嘿嘿~[斜眼笑]。好吧,其实就是找个目的学习python,分享一下。
老规矩,首先定义coding以及引入包。

# -*- coding:utf-8 -*-
from selenium import webdriver
from pynput.keyboard import Key,Listener

接下来获取数据链接。

def get_links(url):
    """
    这里是学习青灯教育课程后收获的知识,这里致谢一下!
    这里需要下载一个浏览器驱动,笔者使用的是火狐的驱动。
    火狐驱动下载可以参考:
    等一念, 2019. Firefox 浏览器驱动下载. url: [ https://www.cnblogs.com/nullnullnull/p/11114373.html ]
    """
    brower = webdriver.Firefox(executable_path = r'./geckodriver.exe')
    brower.get(url)
    infos = brower.find_element_by_id('list')
    links = infos.find_elements_by_css_selector('dl>dd>a')
    UrlLists = []
    for link in links:
        urls = link.get_attribute('href')
        UrlLists.append(urls.split())# urls.split() 删除链接前后的空格
    return UrlLists

这里是将所有章节的链接都存储起来了,也可以不用存储,我是为了测试方便。

个人建议哈,保存数据是一个很好的习惯,大不了用完删了,不要需要的时候发现没有了还得重新获取,不值当。

获取到链接之后把章节内容拿出来。

def get_concent(url):
	# 不知道怎么回事,每次访问网页都需要重新定义引擎,有大佬能给我解释下原因吗?
    brower = webdriver.Firefox(executable_path = r'./geckodriver.exe')
    brower.get(url)
    Lines = brower.find_element_by_id("content").text.split()
    return Lines

其实到这里就已经基本实现爬取小说内容了,但咱们的目的是啥?摸鱼呀,那肯定得把键盘操作加进来呀,结果,还真有。

class Control():
    """
    邂逅模拟卷,2020.python 在控制台中获取键盘按键,例如上下左右. url:[ https://blog.csdn.net/qq_34451909/article/details/110233820 ]
    """
    def __init__(self):
        self.dir_ = None # dir一定要用成员变量,不然没办法在on_press中修改

    def getdir(self):
        self.dir_ = None    # 如果是不是左右则返回None,主要是我没创建上下的作用,其实也可以通用定义每次输出的行数把上下加进来,不过没必要感觉
        def on_press(key):
            if key == Key.up:self.dir_ = None
            elif key == Key.down:self.dir_ = None
            elif key == Key.left:self.dir_ = -1
            elif key == Key.right:self.dir_ = 1
            elif key == Key.esc:self.dir_ = None
            return False
        listener = Listener(on_press=on_press) # 创建监听器
        listener.start()    # 开始监听,每次获取一个键
        print("Press left and right to turn the page, or ESC to quit the read model!")
        listener.join()     # 加入线程
        """
        感谢下莫烦python,看了他多线程的课程才搞懂这是个什么玩意。
        """
        listener.stop()     # 结束监听,没有这句也行,直接随函数终止
        return self.dir_

这个函数挺有用的,可以通过Key.()来修改键盘输入的函数,我也是今天才知道的。毕竟平时工作都是数据分析,这个就没用过。每日一个小进步任务达成~~

进入阅读模式。

def read_model(section = 0):
    """
    :section = 0 定义起始章节
    """
    import time
    _ = None
    while True: 
        Concent = get_concent(urlslist[section][0])
        time.sleep(1) # 设置休眠,避免频繁刷新导致ip被限制    
        for lines in Concent:
            print("\t",lines,end = "\n")
        _ = Control().getdir()
        if _ != None:
            section = section + _
        else:
            break

最后,调用main进程,实现摸鱼。

if __name__ == "__main__":
    # url = "http://www.xbiquge.la/56/56564/" 不知道是不是这里,版权总是审核不通过。
    urlslist = get_links(url)
    read_model(75)  

至于那些保存到文本啊,open函数和write函数啥的,想来可是接触爬虫的人,应该都不会生疏吧。

一个简单的爬虫程序,请各位大佬和萌新们批评指正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值