Limit-fly 发表于 2020-3-31 23:21

一个网站的小说爬取

本帖最后由 Limit-fly 于 2020-3-31 23:21 编辑

最近学习爬虫,发现大部分的都是爬图片的,爬小说的很少,所以我分享一个爬小说的。
当然,爬图片的也有,想要的可以私信我{:1_899:}一个小说网站的小说爬取,示例的是晚明这本小说,测试无误。
这个爬取模板适用这个网站的所有小说,只需更换一下对应的小说目录地址即可。
源码均注释了每一步的操作用途,有需要的小伙伴可以自取。
以下为代码部分
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:
    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()

自在小鱼 发表于 2020-3-31 23:51

感谢分享

林浩棉 发表于 2020-4-1 01:58

感谢分享

NingXIU 发表于 2020-4-1 07:28

感谢啦感谢感谢

老朽不老 发表于 2020-4-1 07:53

感谢分享

tjlba 发表于 2020-4-1 10:57

谢谢分享!

vagrantear 发表于 2020-4-1 11:07

过来研究下代码,感谢分享。
页: [1]
查看完整版本: 一个网站的小说爬取