笔趣阁全站小说爬取
本帖最后由 718718 于 2021-4-24 15:28 编辑笔趣阁全站小说爬取
1.使用了五个模块
mport time
import requests
import os
import random
from lxml import etree
源代码:
#https://www.biquge.info/wanjiexiaoshuo/ 笔趣阁小说全本爬虫
import time
import requests
import os
import random
from lxml import etree
noName = ['#','/','\\',':','*','?','\"','<','>','|'] #\/:*?"<>|
def strZ(_str): #将特殊字符转换为空格
ret = ''
for _ in _str:
if _ in noName:
ret += " "
else:
ret += _
return ret
def main():
filePath = './保存小说'
if not os.path.exists(filePath):
os.mkdir(filePath)
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77"
}
url = 'https://www.biquge.info/wanjiexiaoshuo/'
page = requests.get(url=url, headers=header)
page.encoding = 'utf-8'
tree = etree.HTML(page.text)
page_last = tree.xpath('//div[@class="pagelink"]/a[@class="last"]/text()')
for page_i in range(1, int(page_last)):
url = 'https://www.biquge.info/wanjiexiaoshuo/' + str(page_i)
page = requests.get(url=url, headers=header)
page.encoding = 'utf-8'
tree = etree.HTML(page.text)
li_list = tree.xpath('//div[@class="novelslistss"]/ul/li')
for li in li_list:
page_url = li.xpath('./span[@class="s2"]/a/@href')# 目录链接
page_title = strZ(li.xpath('./span[@class="s2"]/a/text()'))
page = requests.get(url=page_url, headers=header)
page.encoding = 'utf-8'
page_tree = etree.HTML(page.text)
_filePath = filePath + '/' + page_title
if not os.path.exists(_filePath):
os.mkdir(_filePath)
page_dl_list = page_tree.xpath('//div[@class="box_con"]/div[@id="list"]')
page_dl_list = page_tree.xpath('.//dl/dd')
for _ in page_dl_list:
_page_url = page_url + _.xpath('./a/@href')
_page_title = _filePath + '/' + strZ(_.xpath('./a/@title')) + '.txt'
_page = requests.get(_page_url, headers=header)
_page.encoding = 'utf-8'
_tree = etree.HTML(_page.text)
_page_content = _tree.xpath('//div[@id="content"]/text()')
fileContent = ''
for _ in _page_content:
fileContent += _ + '\n'
with open(_page_title, 'w', encoding='utf-8') as fp:
fp.write(fileContent)
print('%s成功下载到本地' % (_page_title))
time.sleep(random.uniform(0.05, 0.2))
if __name__ == '__main__':
main()
感谢分享,谢谢提供分享 谢谢大牛 多谢楼主分享 谢谢@Thanks! 谢谢大佬分享
感谢楼主的分享
支持楼主,谢谢分享。 谢谢分享
页:
[1]