Python爬虫--两百四十多万字,六百章的小说20秒爬完?

利用Python爬取小说(附源码) 阅读详情

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取!】

相信很多人喜欢在空闲的时间里看小说,甚至有小部分人为了追小说而熬夜看,那么问题来了,喜欢看小说的小伙伴在评论区告诉我们为什么喜欢看小说,今天我们手把手教你使用异步协程20秒爬完两百四十多万字,六百章的小说,让你一次看个够。

在爬取之前我们先来简单了解一下什么是同步,什么是异步协程?

同步与异步

同步

同步是有序,为了完成某个任务,在执行的过程中,按照顺序一步一步执行下去,直到任务完成。

爬虫是IO密集型任务,我们使用requests请求库来爬取某个站点时,网络顺畅无阻塞的时候,正常情况如下图所示:

但在网络请求返回数据之前,程序是处于阻塞状态的,程序在等待某个操作完成期间,自身无法继续干别的事情,如下图所示:

当然阻塞可以发生在站点响应后的执行程序那里,执行程序可能是下载程序,大家都知道下载是需要时间的。

当站点没响应或者程序卡在下载程序的时候,CPU一直在等待而不去执行其他程序,那么就白白浪费了CPU的资源,导致我们的爬虫效率很低。

异步

异步是一种比多线程高效得多的并发模型,是无序的,为了完成某个任务,在执行的过程中,不同程序单元之间过程中无需通信协调,也能完成任务的方式,也就是说不相关的程序单元之间可以是异步的。如下图所示:

当请求程序发送网络请求1并收到某个站点的响应后,开始执行程序中的下载程序,由于下载需要时间或者其他原因使处于阻塞状态,请求程序和下载程序是不相关的程序单元,所以请求程序发送下一个网络请求,也就是异步。

  • 微观上异步协程是一个任务一个任务的进行切换,切换条件一般就是IO操作;
  • 宏观上异步协程是多个任务一起在执行;

注意:上面我们所讲的一切都是在单线程的条件下实现。

请求库

我们发送网络请求一定要用到请求库,在Python从多的HTTP客户端中,最常用的请求库莫过于requests、aiohttp、httpx。

在不借助其他第三方库的情况下,requests只能发送同步请求;aiohttp只能发送异步请求;httpx既能发送同步请求,又能发送异步请求。

接下来我们将简单讲解这三个库。

requests库

相信大家对requests库不陌生吧,requests库简单、易用,是python爬虫使用最多的库。

在命令行中运行如下代码,即可完成requests库的安装:

pip install requests

使用requests发送网络请求非常简单,

在本例中,我们使用get网络请求来获取百度首页的源代码,具体代码如下:

import requests
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
response=requests.get('https://baidu.com',headers=headers)
response.encoding='utf-8'
print(response.text)

运行部分结果如下图:

首先我们导入requests库,创建请求头,请求头中包含了User-Agent字段信息,也就是浏览器标识信息,如果不加这个,网站就可能禁止抓取,然后调用get()方法发送get请求,传入的参数为URL链接和请求头,这样简单的网络请求就完成了。

这里我们返回打印输出的是百度的源代码,大家可以根据需求返回输出其他类型的数据。

需要注意的是:

百度源代码的head部分的编码为:utf-8,如下图所示:

我们利用requests库的方法来查看默认的编码类型是什么,具体代码如下所示:

import requests
url = 'https://www.baidu.com'
response = requests.get(url)
print(response.encoding)  

运行结果为:ISO-8859-1

由于默认的编码类型不同,所以需要更改输出的编码类型,更改方式也很简单,只需要在返回数据前根据head部分的编码来添加以下代码即可:

response.encoding='编码类型'

除了使用get()方法实现get请求外,还可以使用post()、put()、delete()等方法来发送其他网络请求,在这里就不一一演示了,关于更多的requests网络请求库用法可以到官方参考文档进行查看,我们今天主要讲解可以发送异步请求的aiohttp库和httpx库。

asyncio模块

在讲解异步请求aiohttp库和httpx库请求前,我们需要先了解一下协程。

协程是一种比线程更加轻量级的存在,让单线程跑出了并发的效果,对计算资源的利用率高,开销小的系统调度机制。

Python中实现协程的模块有很多,我们主要来讲解asyncio模块,从asyncio模块中直接获取一个EventLoop的引用,把需要执行的协程放在EventLoop中执行,这就实现了异步协程。

协程通过async语法进行声明为异步协程方法,await语法进行声明为异步协程可等待对象,是编写asyncio应用的推荐方式,具体示例代码如下:

import asyncio
import time
async def function1():
    print('I am Superman!!!')
    await asyncio.sleep(3)
    print('function1')

async def function2():
    print('I am Batman!!!')
    await asyncio.sleep(2)
    print('function2')

async def function3():
    print('I am iron man!!!')
    await asyncio.sleep(4)
    print('function3')
    
async def Main():
    tasks=[
        asyncio.create_task(function1()),
        asyncio.create_task(function2()),
        asyncio.create_task(function3()),
    ]
    await asyncio.wait(tasks)
    
if __name__ == '__main__':
    t1=time.time()
    asyncio.run(Main())
    t2=time.time()
    print(t2-t1)

运行结果为:

I am Superman!!!
I am Batman!!!
I am iron man!!!
function2
function1
function3
4.0091118812561035

首先我们用了async来声明三个功能差不多的方法,分别为function1,function2,function3,在方法中使用了await声明为可等待对象,并使用asyncio.sleep()方法使函数休眠一段时间。

再使用async来声明Main()方法,通过调用asyncio.create_task()方法将方法封装成一个任务,并把这些任务存放在列表tasks中,这些任务会被自动调度执行;

最后通过asyncio.run()运行协程程序。

注意:当协程程序出现了同步操作的时候,异步协程就中断了。

例如把上面的示例代码中的await asyncio.sleep()换成time.time(),运行结果为:

I am Superman!!!
function1
I am Batman!!!
function2
I am iron man!!!
function3
9.014737844467163

所以在协程程序中,尽量不使用同步操作。

好了,asyncio模块我们讲解到这里,想要了解更多的可以进入asyncio官方文档进行查看。

aiohttp库

aiohttp是基于asyncio实现的HTTP框架,用于HTTP服务器和客户端。安装方法如下:

pip install aiohttp

aiohttp只能发送异步请求,示例代码如下所示:

import aiohttp
import asyncio
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
async def Main():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://www.baidu.com',headers=headers) as response:
            html = await response.text()
            print(html)
loop=asyncio.get_event_loop()
loop.run_until_complete(Main())

运行结果和前面介绍的requests网络请求一样,如下图所示:

大家可以对比requests网络请求发现,其实aiohttp.ClientSession() as session相当于将requests赋给session,也就是说session相当于requests,而发送网络请求、传入的参数、返回响应内容都和requests请求库大同小异,只是aiohttp请求库需要用async和await进行声明,然后调用asyncio.get_event_loop()方法进入事件循环,再调用loop.run_until_complete(Main())方法运行事件循环,直到Main方法运行结束。

注意:在调用Main()方法时,不能使用下面这条语句:

asyncio.run(Main())

虽然会得到想要的响应,但会报:RuntimeError: Event loop is closed错误。

我们还可以在返回的内容中指定解码方式或编码方式,例如:

await response.text(encoding='utf-8')

或者选择不编码,读取图像:

await resp.read()

好了aiohttp请求库我们学到这里,想要了解更多的可以到pypi官网进行学习。

httpx请求库

在前面我们简单地讲解了requests请求库和aiohttp请求库,requests只能发送同步请求,aiohttp只能发送异步请求,而httpx请求库既可以发送同步请求,又可以发送异步请求,而且比上面两个效率更高。

安装方法如下:

pip install httpx

httpx请求库——同步请求

使用httpx发送同步网络请求也很简单,与requests代码重合度99%,只需要把requests改成httpx即可正常运行。

具体示例代码如下:

import httpx
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}
response=httpx.get('https://www.baidu.com',headers=headers)
print(response.text)

运行结果如下图所示:

注意:httpx使用的默认utf-8进行编码来解码响应。

httpx请求库——同步请求高级用法

当发送请求时,httpx必须为每个请求建立一个新连接(连接不会被重用),随着对主机的 请求数量增加,网络请求的效率就是变得很低。

这时我们可以用Client实例来使用HTTP连接池,这样当我们主机发送多个请求时,Client将重用底层的TCP连接,而不是为重新创建每个请求。

with块用法如下:

with httpx.Client() as client:
    ...

我们把Client作为上下文管理器,并使用with块,当执行完with语句时,程序会自动清理连接。

当然我们可以使用.close()显式关闭连接池,用法如下:

client = httpx.Client()
try:
    ...
finally:
    client.close()

为了我们的代码更简洁,我们推荐使用with块写法,具体示例代码如下:

import httpx
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}
with httpx.Client(headers=headers)as client:
    response=client.get('https://www.baidu.com')
    print(response.text)

其中httpx.Client()as client相当于把httpx的功能传递给client,也就是说示例中的client相当于httpx,接着我们就可以使用client来调用get请求。

注意:我们传递的参数可以放在httpx.Client()里面,也可以传递到get()方法里面。

httpx请求库——异步请求

要发送异步请求时,我们需要调用AsyncClient,具体示例代码如下:

import httpx
import asyncio
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}
async def function():
    async with httpx.AsyncClient()as client:
        response=await client.get('https://www.baidu.com',headers=headers)
        print(response.text)
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(function())

运行结果为:

首先我们导入了httpx库和asyncio模块,使用async来声明function()方法并用来声明with块的客户端打开和关闭,用await来声明异步协程可等待对象response。接着我们调用asyncio.get_event_loop()方法进入事件循环,再调用loop.run_until_complete(function())方法运行事件循环,直到function运行结束。

好了,httpx请求库讲解到这里,想要了解更多的可以到httpx官方文档进行学习,接下来我们正式开始爬取小说。

实战演练

接下来我们将使用requests请求库同步和httpx请求库的异步,两者结合爬取17k小说网里面的百万字小说,利用XPath来做相应的信息提取。

Xpath小技巧

在使用Xpath之前,我们先来介绍使用Xpath的小技巧。

技巧一:快速获取与内容匹配的Xpath范围。

我们可以将鼠标移动到我们想要获取到内容div的位置并右击选择copy,如下图所示:

这样我们就可以成功获取到内容匹配的Xpath范围了。

技巧二:快速获取Xpath范围匹配的内容。

当我们写好Xpath匹配的范围后,可以通过Chrome浏览器的小插件Xpath Helper,该插件的安装方式很简单,在浏览器应用商店中搜索Xpath Helper,点击添加即可,如下图所示:

使用方法也很简单,如下图所示:

首先我们点击刚刚添加的插件,然后把已经写好的Xpath范围写到上图2的方框里面,接着Xpath匹配的内容将出现在上图3方框里面,接着被匹配内容的背景色全部变成了金色,那么我们匹配内容就一目了然了。

这样我们就不需要每写一个Xpath范围就运行一次程序查看匹配内容,大大提高了我们效率。

获取小说章节名和链接

首先我们选取爬取的目标小说,并打开开发者工具,如下图所示:

我们通过上图可以发现,<div class="Main List"存放着我们所有小说章节名,点击该章节就可以跳转到对应的章节页面,所以可以使用Xpath来通过这个div来获取到我们想要的章节名和URL链接。

由于我们获取的章节名和URL链接的网络请求只有一个,直接使用requests请求库发送同步请求,主要代码如下所示:

async def get_link(url):
    response=requests.get(url)
    response.encoding='utf-8'
    Xpath=parsel.Selector(response.text)
    dd=Xpath.xpath('/html/body/div[5]')
    for a in dd:
        #获取每章节的url链接
        links=a.xpath('./dl/dd/a/@href').extract()
        linklist=['https://www.17k.com'+link for link in links]
        #获取每章节的名字
        names=a.xpath('./dl/dd/a/span/text()').extract()
        namelist=[name.replace('\n','').replace('\t','') for name in names]
        #将名字和url链接合并成一个元组
        name_link_list=zip(namelist,linklist)

首先我们用async声明定义的get_text()方法使用requests库发送get请求并把解码方式改成’utf-8’,接着使用parsel.Selector()方法将文本构成Xpath解析对象,最后我们将获取到的URL链接和章节名合并成一个元组。

获取到URL链接和章节名后,需要构造一个task任务列表来作为异步协程的可等待对象,具体代码如下所示:

task=[]
for name,link in name_link_list:
    task.append(get_text(name,link))
await asyncio.wait(task)

我们创建了一个空列表,用来存放get_text()方法,并使用await调用asyncio.wait()方法保存创建的task任务。

获取每章节的小说内容

由于需要发送很多个章节的网络请求,所以我们采用httpx请求库来发送异步请求。

主要代码如下所示:

async def get_text(name,link):
    async with httpx.AsyncClient() as client:
        response=await client.get(link)
        html=etree.HTML(response.text)
        text=html.xpath('//*[@id="readArea"]/div[1]/div[2]/p/text()')
        await save_data(name,text)

首先我们将上一步的获取到的章节名和URL链接传递到用async声明定义的get_text()方法,使用with块调用httpx.AsyncClient()方法,并使用await来声明client.get()是可等待对象,然后使用etree模块来构造一个XPath解析对象并自动修正HTML文本,将获取到的小说内容和章节名传入到自定义方法save_data中。

保存小说内容到text文本中

好了,我们已经把章节名和小说内容获取下来了,接下来就要把内容保存在text文本中,具体代码如下所示:

async def save_data(name,text):
    f=open(f'小说/{name}.txt','w',encoding='utf-8')
    for texts in text:
        f.write(texts)
        f.write('\n')
        print(f'正在爬取{name}')

老规矩,首先用async来声明save_data()协程方法save_data(),然后使用open()方法,将text文本文件打开并调用write()方法把小说内容写入文本中。

最后调用asyncio.get_event_loop()方法进入事件循环,再调用loop.run_until_complete(get_link())方法运行事件循环,直到function运行结束。具体代码如下所示:

url='https://www.17k.com/list/2536069.html'
loop = asyncio.get_event_loop()
loop.run_until_complete(get_link(url))

结果展示


最后,如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上:
包括:Python安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

在这里插入图片描述

Python爬取小说教程详解 免责声明:1、本项目爬取的网站数据仅用于学习交流目的,不用于任何商业用途。2、我们尊重原网站的版权和知识产权,不会对爬取的数据进行任何形式的篡改、传播或用于非法用途。3、爬取行为严格遵守我国相关法律法规,如有侵犯原网站权益,请及时与我们联系,我们将立即停止爬取行为并删除相关数据。4、本项目不对因使用爬取数据导致的任何损失或损害承担责任。5、请使用者遵守本免责声明,如有违反,后果自负。 阅读详情

相关推荐

Python爬虫——异步爬虫,两百四十多万字,六百章的小说20秒爬完?

大家好!我是霖hero。 相信很多人喜欢在空闲的时间里看小说,甚至有小部分人为了追小说而熬夜看,那么问题来了,喜欢看小说的小伙伴在评论区告诉我们为什么喜欢看小说,今天我们手把手教你使用异步协程20秒爬完两百四十多万字,六百章的小说,让你一次看个够。 在爬取之前我们先来简单了解一下什么是同步,什么是异步协程? 同步与异步 同步 异步 请求库 requests库 asyncio模块 aiohttp库 httpx请求库 httpx请求库——同步请求 httpx请求库——同步请求高级用法

霖hero 1543

python爬虫实战——小说爬取

基于requests库和lxml库编写的爬虫,目标小说网站域名http://www.365kk.cc/,类似的小说网站殊途同归,均可采用本文方法爬取。

cuc_pyx技术小站 4万+

Python爬虫实战:抓取小说内容并保存到本地

在上面的代码中,我们先定义一个空列表data,用于存储解析得到的数据。在上面的代码中,我们将要爬取的小说的URL填写到了start_urls中。接下来,我们需要打开myspider/spiders/myspider.py文件,编辑其中的代码,在start_urls中填写所要爬取的小说的URL。可以将解析得到的数据序列化为JSON格式,然后使用Python的文件操作,将数据写入到文件中。这里的myspider是我们自己定义的Spider名称,www.example.com是要爬取的网站域名。

BUG?不存在的! 1608

使用python爬取小说

使用python爬虫爬取小说 喜欢看网络小说的朋友们,经常需要从网上下载小说。有些人不想向正版网页交钱,也不想注册其他网站的账号,那么对于某些比较冷门的小说或者是正在更新的小说来说,就很难下载到txt或者其他格式的小说。我就是不想花太多时间找冷门小说的下载资源,因此稍微学习了python的爬虫知识。 新建scrapy爬虫项目 scrapy是python的爬虫框架。使用以下语句安装scra...

FengF2017的博客 1万+

网络小说爬虫:使用Python爬取小说内容,实现离线阅读功能

网络小说是当今流行的文学形式之一,拥有大量优秀的作品吸引着无数读者。然而,长时间在网络上阅读可能会导致眼睛疲劳或缺少离线阅读的便利性。本篇博客将带你学习如何使用Python编写一个简单的网络小说爬虫,从小说网站上爬取小说内容,并实现离线阅读功能。网络小说爬虫是一种自动化获取小说网站上小说内容的程序。通过模拟人的行为,小说爬虫可以自动访问小说网站、解析网页内容并获取小说的目录和内容等信息。在本次实战中,我们将使用Python编写一个简单的网络小说爬虫,从小说网站上爬取小说内容,并实现离线阅读功能。

2201_76125393的博客 1391

Python爬取小说网站的小说

Python爬取小说网站的小说

初学者-Python 网页爬取小说

找到想看的小说的网站地址→爬取小说所有章节的网站地址→爬取每章小说的标题和内容→把内容保存到TXT文件确定小说的网站地址。python...

a7568712的博客 1万+

C#实战:5分钟搞定Modbus RTU通讯(基于NModbus4库)

本文详细介绍了如何使用C#和NModbus4库快速实现Modbus RTU通讯,包括环境配置、核心功能实现、性能优化及常见问题排查。通过代码示例和实用技巧,帮助开发者高效完成工业自动化设备的数据采集与控制任务。

weixin_30689307的博客 467

python:爬取网络小说,看这一篇就够了

代码的主要内容就是通过单个章节的链接获取到回复,之后找到居中格式的div ,获取其中的文本就是先说内容 这个时候我们将其写入到txt中,知道完成下载,其中延时是必须的,防止影响网站运行,从而导致踩缝纫机的风险。滤除第一种的时候,我们只需要将章节这个也加入判断即可,滤除第二种错误数据我们就需要强行固定序列了,比如我们强行让它从第一章开始。需要导入的第三方包有两个,是requests和BeautifulSoup,其中一个是用于网页请求的,一个是网页解析的。我们发现其中还是有两个我们不想要的数据。

Tom_Jerry__的博客 6331

华为硬件工程师笔试题

1、基尔霍夫定理的内容是什么?(仕兰微电子)   基尔霍夫定理包括电流定律和电压定律。   电流定律(KCL):在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。   电压定律(KVL):在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。   2、平板电容公式(C=εS/4πkd)。(未知)   3、最基本的如三极管曲线特性。(未知)   4、描述反馈电路...

weixin_33717117的博客 2万+

EMC(6)——电磁场的屏蔽

假如,机箱没有开口缝隙,比如篮球这种壳体,屏蔽效能都能达到100dB,100dB,基本上把电磁场强度能衰减万倍的关系,所以,这种方式屏蔽效能非常高。一般,钣金机箱,缝隙很大,大家目视就可以看到,铝铣的机箱,比较平整,但实际情况,表面其实也是坑坑洼洼,只是,大家肉眼看不出来而已!这种安装方式,是直接在缝隙增加导电材料,存在一个问题,就是,手法温柔点,压缩度会不够,手法粗暴点,过度压缩。所以,不是说,用金属机箱就能起到屏蔽效果,重要的是,要做好机箱孔缝电磁兼容设计,否则,是金属机箱,也是摆设。

qq_39825125的博客 2181

用Python爬取小说

Python爬取 小说 《北派盗墓笔记》,内容来自互联网

LM813381916的博客 5230

【NLP】语言模型的发展历程 (1)

N-gram模型是一种基于统计语言模型的文本分析算法,它用于预测文本中下一个词出现的概率,基于前面出现的n-1个词的序列。这里的n代表序列中元素的数量,因此称为N-gram。Unigram:N=1,每个单词的出现概率独立计算,不考虑上下文。Bigram:N=2,基于前一个单词预测当前单词的联合概率模型。Trigram:N=3,考虑前两个单词来预测当前单词的联合概率模型,更复杂但可能更准确。

酒酿小圆子呀~ 1668

【零基础学爬虫】用python爬取小说

文章目录前言一、先上效果图二、使用步骤1.引入库2.读入数据总结 前言 之前因为想研究怎么让esp8266上校园网,折腾半天,请教大佬后,说要先学爬虫,就能知道怎么模拟登录上网了。大佬学的是c#,我学的是python,于是就开始学习了python爬虫,这是学习中觉得好玩的事,也遇到了不少困难。 一、先上效果图 这本书一共两千四百多章 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pypl

weixin_56760882的博客 2万+

FI 应计对象的创建和摊销

创建/修改:ACACTREE01/ACACTREE02 应计对象的过账:ACACPOSTING

nancyln9711的博客 903

dolphinscheduler服务注册中心源码解析(一)服务注册与发现整体设计

下一篇文章我们开始讲解dolphinscheduler基于Zookeeper实现注册中心的源码解析。

最爱嫣夜来 375

完全小白篇-使用Python爬取网络小说

完全小白篇-使用Python爬取网络小说找一个你要爬取的小说分析网页一、网页的展示方式需要用到的库文件向网站发送请求正则提取跳转的逻辑后续处理保存信息进入docx文件新的问题:超时重传 找一个你要爬取的小说 作为python小白,这篇博客仅作为我的一个学习记录。 本篇我就拿一个实际案例来做吧,短短50行代码调试了一晚上,爬虫还得继续好好学啊!拿最近很火的《元龙》举例。 (采用读书网的资源) 分析网页 一、网页的展示方式 打开最开始的那章,按F12看一下网页代码,首先需要注意的地方无外乎两点: 从目录的网

Mr_Ohahah的博客 4万+

YOLOv8剪枝 l1剪枝测试精度仅掉0.8个点,速度提高10.7fps!

文章摘要: 本文提出了一种基于组归一化的重要性评分方法GroupNormImportance,用于神经网络剪枝中的通道选择。该方法支持多种变体,包括标准L1范数、组L1范数和BN缩放因子等计算方式。核心实现包括三个关键部分:1)支持p范数计算(默认为L2);2)提供7种组重要性归约方法(如均值、最大值等);3)提供8种归一化方案(包括标准化、高斯化、LAMP等)。该方法输入一个剪枝组,输出各通道的重要性分数,通过依赖图可实现结构化剪枝。实验对比图展示了剪枝前后的效果差异,验证了该方法的有效性。

FJN110的博客 397

python爬虫篇(项目案列讲解-爬取小说)

学习一下思路:1.我们进入需要爬取到的小说界面,右键开发者工具 ,选中元素显示,然后找到需要爬取的小说章节模块在代码中的位置。将a标签中的文本内容复制,然后ctrl+u打开源代码 ctrl+f将刚刚的文本内容复制查找是否有这个模块。(比较爽的是,刚好这里有,可以不需要去查看网络请求和script代码了)那么我们现在可以可以来获取源代码了编码格式的查看方式。获取源代码之后,我们现在需要去解析一下这串源代码。

m0_65482549的博客 4842

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够精细的空间和光谱分辨率来识别树木。获得此影像后,将创建训练样本并将其转换为可供深度学习模型使用的格式。为了让模型识别出它的查找任务,需要定义棕榈树的影像,以便识别相似的像素和树木大小。

智慧空间实验室 2207

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用Python爬取小说

爬取网站:http://www.biqugecom.com/ 爬取方式:整站爬取,就是把该站所有的小说都爬下来。 本次爬取涉及到的知识点有: Xpath 类的定义及使用 requests库的使用 准备工作 安装requests库: pip3 install requests 安装lxml库: pip3 install lxml 分析网站: 得到每个分类的页面的链接只有...

洋洋的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python爬虫实战——小说爬取_python爬取小说

使用 库的 方法请求网站内容,将其解码为文本形式,输出结果验证,完整的代码如下: 输出结果如下:可以看出,我们成功请求到了网站内容,接下来只需对其进行解析,即可得到我们想要的部分。我们使用 库来解析网页内容,具体方法为将文本形式的网页内容创建为可解析的元素,再按照XPath路径访问其中的内容,代码如下: 输出结果如下:至此,我们已经学会了基本的网页请求方法,并学会了如何获取目标页面中的特定内容。接下来,我们开始爬取正文。首先尝试获取单个页面的数据,再尝试设计一个循环,依次获取所有正文数据。以第一章为

2401_83704192的博客 1946

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【爬虫实战】手把手教你使用python爬取网络小说

文章目录写作缘起上代码思路分析效果展示写在最后 写作缘起 南墙最近发现自己常用的看小说网站多了许多广告,果然商业化的现今网上几无净土啊,便决定自己写个小说下载器,这样看小说贼爽 上代码 import random import requests from bs4 import BeautifulSoup import re import os import time # 构造请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; W

weixin_43827376的博客 6487

用python爬取一本网络小说

用python爬取一本网络小说。

Binary_huang的简介 1349

入门Python爬虫:使用Scrapy框架爬取小说教程及代码实例

相信学Python爬虫的小伙伴听说过Scrapy框架,也用过Scrapy框架。今天我们边学习Scrapy框架边爬取整部小说,让大家在不知不觉的学习过程中使用Scrapy框架完成整部小说的爬取~Scrapy框架是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,是提取结构性数据而编写的应用框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,我们只需要少量的代码就能够快速抓取数据。

python03011的博客 4898

python爬取小说

python获取小说

sitive的博客 1438
上一篇: Python从入门到精通全套资料!完整免费送给大家!(0基础到就业)
下一篇: 如何从0开始学习Python自动化测试开发!
Python_trys
博客等级 码龄2年 4370粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值