切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 简约米色 龙珠
回复 0

3878

主题

3878

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12870
一个网站的小说爬取[复制链接]
发表于 2022-5-22 19:52:09 | 显示全部楼层 |阅读模式
一个小说网站的小说爬取,示例的是晚明这本小说,测试无误。
这个爬取模板适用这个网站的所有小说,只需更换一下对应的小说目录地址即可。
源码均注释了每一步的操作用途,有需要的小伙伴可以自取。
以下为代码部分
import requests
import re
from bs4 import BeautifulSoup
from lxml import etree
cookies = {
      '__cfduid': 'dd0324475e57064a9b28791ba932b20c41585493290',
      'Hm_lvt_3a0ea2f51f8d9b11a51868e48314bf4d': '1585493293',
      'Hm_lpvt_3a0ea2f51f8d9b11a51868e48314bf4d': '1585493368',
}
Headers = {
      'Connection': 'keep-alive',
      'Cache-Control': 'max-age=0',
      'Upgrade-Insecure-Requests': '1',
      'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
      'Referer': 'http://www.xiaoshuo240.cn/cbxs240_rank.html',
      'Accept-Language': 'zh-CN,zh;q=0.9',
}
#获取当前session
session = requests.Session()
#头信息放入session中
session.headers.update(Headers)
#解决警告
requests.packages.urllib3.disable_warnings()
#发送请求
response = session.get('http://www.xiaoshuo240.cn/cbxs240/21046/', verify=False)
# print(response)
#获取网页信息
html_doc = BeautifulSoup(response.text,'lxml')
# print(html_doc)
#获取所有的章节list信息
dl_doc = html_doc.find('div',id = 'list')
# 提取章节的url
my_info = re.findall(r'href="(.*?)"',str(dl_doc))
# print(my_info)
url_stl = 'http://www.xiaoshuo240.cn'
#打开文件准备写入小说内容
tx =open('晚明.txt', 'a+', encoding='utf-8')
#遍历整个小说章节url
for page_a in my_info[8:]:
      url_page = url_stl+page_a
      print(url_page)
      #清除警告
      requests.packages.urllib3.disable_warnings()
      #对章节网页发起请求
      response = session.get(url_page,verify=False)
      # 获取网页信息
      html_doc = etree.HTML(response.text)
      #获取div节点中id=content的div对应的文本信息
      #获取章节标题
      h1_title = html_doc.xpath('string(//h1)')
      #标题写入文件
      # tx =open('晚明.txt', 'a+', encoding='utf-8')
      tx.write(str(h1_title) + '\n\r\n\r')
      print(h1_title)
      text = html_doc.xpath('string(//div[@id="content"])')
      #对文本内容空格进行换行操作
      result_txt = str(text).replace('      ', '\n')
      print(result_txt)
      # 内容写入文件
      # with open('晚明.txt', 'a+', encoding='utf-8') as tx:
      tx.write(result_txt+'\n\r\n\r')
tx.close()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|不懂 ( 粤ICP备14042591号-1 )|网站地图

GMT+8, 2024-11-24 09:25 , Processed in 0.090959 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部