爬取的基本步骤

一、明确需求

爬取网站内的小说名

小说内容

二、代码讲解

下面根据代码,从浅入深给大家讲解分析一遍

-- codeing = utf-8 --,开头的这个是设置编码为utf-8 ,写在开头,防止乱码

然后下面 import就是导入一些库,做做准备工作

import os
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import requests
import SQL
import pinyin
from bs4 import BeautifulSoup
from pymysql import *

首先我们要伪装成一个浏览器,再去访问我们需要爬取的网站

百度百科:
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

以Chrome浏览器为例,在浏览器地址栏输入

可以看到,浏览器User-Agent为Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36

下面是详细的代码

        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62'}url = 'https://www.shicimingju.com/book/%s.html'name_p = pinyin.pinyin(name)

我们先建立起一个数据表用来保存一会我们要爬取的数据

sql = "CREATE TABLE `novel`.`{}`(     `section` TEXT(100) ,     `article` TEXT(10000)   );".format(name)SQL.doSql(sql)

现在我们要开始爬取网页上我们需要的数据了,并且把爬取到的数据存入到我们所建立起的数据库里

for li in li_list:title = li.a.stringdetail_url = 'https://www.shicimingju.com'+li.a['href']detail_page_text = requests.get(url=detail_url,headers=headers)detail_page_text.encoding = 'utf-8'html = detail_page_textdetail_page_text = detail_page_text.textdetail_soup = BeautifulSoup(detail_page_text,'lxml')div_tag = detail_soup.find('div',class_='chapter_content')content = div_tag.textsql = "INSERT INTO `novel`.`{}`(`section`,`article`) VALUES ( \'{}\',\'{}\');".format(name,title,content)SQL.doSql(sql)print(title,'爬取成功!!!! ')

最后附上我们的完整代码

import os
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import requests
import SQL
import pinyin
from bs4 import BeautifulSoup
from pymysql import *conn = connect(host='localhost',user='root',password='',db='novel',charset='utf8')
cs1 = conn.cursor()
# cur = connect.cursor()
# cur.execute()# 生成小说
def book(name):novel_path = os.path.join('./text', name)os.mkdir(novel_path)count = cs1.execute('SELECT section,article FROM `{}`;'.format(name))for i in range(count):result = cs1.fetchone()I = str(i)title_path = './text/' + name + '/' + I + '_' + result[0] + '.txt'with open(title_path, 'w', encoding='utf-8') as fp:fp.write(result[1])# text中有哪些小说
def path():import osdir_path = './text'for root, dirs, files in os.walk(dir_path):list = dirsbreakreturn list
# 词云
def wc(word,name):count = cs1.execute('SELECT section,article FROM `{}`;'.format(name))content_num = []for i in range(count):result = cs1.fetchone()words = jieba.lcut(result[1])for word in words:content_num.append(result[0])# content_num = str(content_num)cut_text = "".join(content_num)if cut_text == NULL:name = input('请重新输入关键词:')wc(word,name)wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",background_color="white",width=1000,height=800).generate(cut_text)plt.imshow(wordcloud)plt.show()# 打开小说文件夹
def sel(name_r):path_r = '.\\text\\' + name_ros.startfile(path_r)if __name__ == "__main__":name = input('请输入小说名字:')count = cs1.execute('SHOW TABLES FROM novel;')content_list = []# 处理小说名字加入列表中for i in range(count):result = str(cs1.fetchone())result = result[2:-3]content_list.append(result)# 判断是否重名,重名打开小说,没重名爬下来if (name in content_list):for i in content_list:print(i)while True :name_r = input("选择您要读的书籍:")if (name_r in content_list):break;else:print("输入有误请重新输入")word = input("关键词:")wc(word,name_r)if (name_r in path()):sel(name_r)else:book(name)sel(name)else:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62'}url = 'https://www.shicimingju.com/book/%s.html'name_p = pinyin.pinyin(name)url = format(url%name_p)page_text = requests.get(url=url,headers=headers)page_text.encoding = 'utf-8'html = page_textpage_text = page_text.textsoup = BeautifulSoup(page_text, 'lxml')li_list = soup.select('.book-mulu > ul > li')sql = "CREATE TABLE `novel`.`{}`(     `section` TEXT(100) ,     `article` TEXT(10000)   );".format(name)SQL.doSql(sql)for li in li_list:title = li.a.stringdetail_url = 'https://www.shicimingju.com'+li.a['href']detail_page_text = requests.get(url=detail_url,headers=headers)detail_page_text.encoding = 'utf-8'html = detail_page_textdetail_page_text = detail_page_text.textdetail_soup = BeautifulSoup(detail_page_text,'lxml')div_tag = detail_soup.find('div',class_='chapter_content')content = div_tag.textsql = "INSERT INTO `novel`.`{}`(`section`,`article`) VALUES ( \'{}\',\'{}\');".format(name,title,content)SQL.doSql(sql)print(title,'爬取成功!!!! ')print("$$$$$$爬取结束!!!$$$$$$")word = input("关键词:")wc(word, name)if (name in path()):sel(name)else:book(name)sel(name)cs1.close()
conn.close()

完整代码里还有一些其他的功能,有感兴趣的小伙伴可以自己研究研究!

Python爬虫诗词名句网教程相关推荐

  1. python 爬虫 scrapy1_官网教程

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  2. 使用Xpath爬虫库下载诗词名句网的史书典籍类所有文章。

    # 需要的库 from lxml import etree import requests # 请求头 headers = {'User-Agent': 'Mozilla/5.0 (Windows N ...

  3. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~

    上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...

  4. 每日爬虫练习:bs4库爬取诗词名句网的四大名著

    一.前言 2020-04-2日爬虫练习 爬取网站:诗词名句网的四大名著 需求:将四大名著的每一个章节存储到本地 技术路线: 1.requests 2.BeautifulSoup 3.os 二.代码解释 ...

  5. 爬取诗词名句网的三国演义小说

    爬取诗词名句网的三国演义小说 诗词名句网,有很多的诗词和一些课本上古诗的,是一个很好的文学网站,但是我们就来爬取诗词名句网的三国演义小说 第一步我们还是导入要导入的库: import requests ...

  6. python网易云_用python爬虫爬取网易云音乐

    标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...

  7. python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇

    image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...

  8. python爬虫----爬取网易云音乐

    使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...

  9. 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)

    目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...

最新文章

  1. cloudera hbase集群简单思路
  2. php mysql 降_PHP,MySQL:mysql替代php in_array函数
  3. SpringBoot系列:Spring Boot集成定时任务Quartz
  4. 关于PHP使用GD库生成的验证码无法在别处显示
  5. Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
  6. 用c语言程序编写电池管理系统,基于Freescale单片机的电池管理系统设计.doc
  7. HR怼程序员频繁跳槽,程序员竟这么回怼
  8. [******] 树问题:普通二叉树的创建与遍历
  9. python的运行环境是如何搭建的_教女朋友学Python运行环境搭建
  10. 全志 A64 开发板移植SQLite3
  11. opencv 图像基本操作 像素值的获取、图像大小、ROI、通道分割与合并等
  12. Macbook Pro休眠唤醒后后台运行程序被关闭的解决方法
  13. 二维码的实现原理和实现过程[纠错码编码]
  14. 怎么注册tk域名_关于注册免费TK域名不成功的几个问题解决方案
  15. 我的PCB设计经验——奥研电子整理
  16. 【EXLIBRIS】#小词旮旯#
  17. 新手小白学吉他,如何掌握基础快速入门
  18. excel平均值公式_必学的6个Excel平均值公式
  19. ps倒出gif只有html,PS中我做好了帧(动画没问题),但是怎么导出GIF的动画?
  20. 关于2018后新款 Mac增加T2安全芯片造成无法U盘启动解决办法

热门文章

  1. QQ安全防护驱动(QQProtect)彻底删除方法
  2. metal slug java_【进化史】合金弹头进化史 Metal Slug Games (1996-2020)
  3. 3款好用的客户系统管理软件推荐,你用过哪款?
  4. 4月15日csol服务器维护中,csol2017年2月15日更新内容一览 csol2.15更新公告
  5. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
  6. matlab text字是竖着的,iOS - Label文字竖排
  7. MobileNets:用于移动视觉应用的高效卷积神经网络
  8. linux tr,Linux Tr命令与示例
  9. C++ 态度决定一切(字符串)
  10. 边缘计算是什么, 处理器、算法和存储器的介绍