这是我第一次写爬虫代码,爬取的网站是https://www.qb5200.co~
环境为Python3.7,需要安装第三方库requests和parsel。爬取速度比较慢~~仅供学习参考。parsel库比较人性,不像其他那样巴拉巴拉写一堆正则compile之类的,容易乱。这里我主要写两个函数第一个是获取所有url的地址,在最后调用第二个函数进行保存。网站。
分享下作为初学者使用经验。在win10下的edge浏览器(中文的好看一下~~),按下F12,查看网页源代码,再按下ctrl+F快速查找定位网页内容。这样就可以复制Xpath,selector等这些元素。也可以下载插件,比较方便。
import requests
import time
import parsel
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'
}#UA伪装
print("爬取全本小说网 https://www.qb5200.co")
url=input("请输入小说的主页地址:")#https://www.qb5200.co/book_114601/
name=input("请输入小说名字")
def get_url(url):
response=requests.get(url)
response.encoding='utf-8'
select= parsel.Selector(response.text)
all_urls=select.css('dd a::attr(href)').extract()#获取直链
#print(all_urls)
for urls in all_urls:
#urls=('https://www.qb5200.co/book_69191/'+urls)
#print(urls)完整的url地址
download_one_chapter(url+urls)#调用自定义下载函数加入for循环中
print('小说加载完毕,客官请品鉴')
def download_one_chapter(url):
time.sleep(1)#加入延迟
response = requests.get(url, headers=header)
select = parsel.Selector(response.text)
title = select.css('#main > h1::text').get()
print('抓取' + title + ' 成功!!')
content = select.css('#content::text').extract()
text = ""
for i in content:
text = text + i.strip() + '\n'
#print(title, text)
with open(name + '.txt','a',encoding='utf-8')as f:##模式必须是a
f.write(title)
f.write('\n')
f.write('\n')
f.write(text)
f.close()
if __name__=="__main__":
get_url(url)
结果如下:你可以访问主页后选择要爬取的小说的链接,输入地址和名字下载到本地目录下。