本人闲来无事心血来潮要爬取网络小说,下面这个代码就是本人目前在用的,如有更简单的可以来私信我。
在这里我用的是这个网址,当然你们也可以用其他的
在python中只需要导入两个库就行了
import requests
import parsel
在这里requsts库就不必多说了,使用parsel模块它可以直接调用re,css和xpath
一,先导入requests模块,在使用url查询地址
import requests
url = ''
在这里我们以蛊真人为例
点击F12进入开发者模式,点击第一章,在网络里面随便搜索一个,在这里我搜索的是第一节,找到它的url
import requests
url = 'https://www.dxmwx.org/read/38127_8939547.html'
二,我们要进行伪装,把我们的请求伪装成普通的浏览器访问,使用headers进行伪装
import requests
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
}
我们去标头去找到他的user-agent
然后就可以进行伪装了
import requests
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
然后进行请求使用response
import requests
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
response = requests.get(url,headers=headers).text
print(response)
打印完之后就可以看到我们想要的内容
然后在这时候就可以加入我们的parsel模块了
import requests
import parsel
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
response = requests.get(url,headers=headers).text
print(response)
然后我们创建一个变量用来接收parsel返回的信息
import requests
import parsel
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
response = requests.get(url,headers=headers).text
print(response)
Selsctor = parsel.Selector(response)
接着我们在这里使用书名当变量,用css语句来提取内容
章节名也是一样的方法去他当作变量名,使用css来接收
然后我们使用print打印一下看看是不是我们想要的内容
import requests
import parsel
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
response = requests.get(url,headers=headers).text
Selector = parsel.Selector(response)
ChapterTitle = Selector.css('#ChapterTitle ::text').get()
Lab_Contents = Selector.css('#Lab_Contents p::text').getall()
print(ChapterTitle)
print(Lab_Contents)
在这里我们发现没有错了是我们要找的,然后我们使用join语句把它转换成字符串
import requests
import parsel
url = 'https://www.dxmwx.org/read/38127_8939547.html'
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0'
}
response = requests.get(url,headers=headers).text
Selector = parsel.Selector(response)
ChapterTitle = Selector.css('#ChapterTitle ::text').get()
Lab_Contents = Selector.css('#Lab_Contents p::text').getall()
con = '\n\n'.join(Lab_Contents)
print(ChapterTitle)
print(con)
然后我们就可以看到第一张已经被我们爬取下来了
爬取成功后我们就可以把他下载到我们的本地了使用with open的方法下载下来
with open(f'小说/{ChapterTitle}', 'w') as f:
f.write(con)
print("下载成功")
我们发现已经下载到本地了
到这里我们的使用python爬取网络小说已经成功了并且已经和保存到了本地,如果这篇文章反响好的话我会去更新怎么批量爬取网络小说,不是爬取单章小说。