Python爬虫诗词名句网教程
爬取的基本步骤
一、明确需求
爬取网站内的小说名
小说内容
二、代码讲解
下面根据代码,从浅入深给大家讲解分析一遍
-- 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爬虫诗词名句网教程相关推荐
- python 爬虫 scrapy1_官网教程
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- 使用Xpath爬虫库下载诗词名句网的史书典籍类所有文章。
# 需要的库 from lxml import etree import requests # 请求头 headers = {'User-Agent': 'Mozilla/5.0 (Windows N ...
- 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~
上次写了爬取这个网站的程序,有一些地方不完善,而且爬取速度较慢,今天完善一下并开启多进程爬取,速度就像坐火箭.. # 需要的库 from lxml import etree import reques ...
- 每日爬虫练习:bs4库爬取诗词名句网的四大名著
一.前言 2020-04-2日爬虫练习 爬取网站:诗词名句网的四大名著 需求:将四大名著的每一个章节存储到本地 技术路线: 1.requests 2.BeautifulSoup 3.os 二.代码解释 ...
- 爬取诗词名句网的三国演义小说
爬取诗词名句网的三国演义小说 诗词名句网,有很多的诗词和一些课本上古诗的,是一个很好的文学网站,但是我们就来爬取诗词名句网的三国演义小说 第一步我们还是导入要导入的库: import requests ...
- python网易云_用python爬虫爬取网易云音乐
标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...
- python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇
image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...
- python爬虫----爬取网易云音乐
使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...
- 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)
目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...
最新文章
- cloudera hbase集群简单思路
- php mysql 降_PHP,MySQL:mysql替代php in_array函数
- SpringBoot系列:Spring Boot集成定时任务Quartz
- 关于PHP使用GD库生成的验证码无法在别处显示
- Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
- 用c语言程序编写电池管理系统,基于Freescale单片机的电池管理系统设计.doc
- HR怼程序员频繁跳槽,程序员竟这么回怼
- [******] 树问题:普通二叉树的创建与遍历
- python的运行环境是如何搭建的_教女朋友学Python运行环境搭建
- 全志 A64 开发板移植SQLite3
- opencv 图像基本操作 像素值的获取、图像大小、ROI、通道分割与合并等
- Macbook Pro休眠唤醒后后台运行程序被关闭的解决方法
- 二维码的实现原理和实现过程[纠错码编码]
- 怎么注册tk域名_关于注册免费TK域名不成功的几个问题解决方案
- 我的PCB设计经验——奥研电子整理
- 【EXLIBRIS】#小词旮旯#
- 新手小白学吉他,如何掌握基础快速入门
- excel平均值公式_必学的6个Excel平均值公式
- ps倒出gif只有html,PS中我做好了帧(动画没问题),但是怎么导出GIF的动画?
- 关于2018后新款 Mac增加T2安全芯片造成无法U盘启动解决办法
热门文章
- QQ安全防护驱动(QQProtect)彻底删除方法
- metal slug java_【进化史】合金弹头进化史 Metal Slug Games (1996-2020)
- 3款好用的客户系统管理软件推荐,你用过哪款?
- 4月15日csol服务器维护中,csol2017年2月15日更新内容一览 csol2.15更新公告
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
- matlab text字是竖着的,iOS - Label文字竖排
- MobileNets:用于移动视觉应用的高效卷积神经网络
- linux tr,Linux Tr命令与示例
- C++ 态度决定一切(字符串)
- 边缘计算是什么, 处理器、算法和存储器的介绍