上一篇准备好了数据库,现在开始填充数据库,数据来源为小说网站,爬虫库为requests库,多线程爬取,总共爬取数据5万多条。开始干吧!

框架分析
1、网站组成,手机版
3、分页组成,共页,每页50条数据,共计本小说
4、分类暂时未知
5、按照分页爬取每一页的数据,图书网址代码:<a href="/book_34351/">,re提取表达式:<a href="/(.+?)/">
6、对将所有的数据网址保存到记事本
7、读取记事本,拼接url,url = 'http://m.xs52.org/' + 读取结果
8、进入图书网址
9、提取书名,作者,简介,分类,图片,链接,1、书名,<p><strong>十年一品温如言(全集)</strong></p>,re提取表达式: <p><strong>(.+?)</strong></p>         2、作者,<p>作者:<a href="/modules/article/waps.php?searchtype=author&searchkey=书海沧生">书海沧生</a></p>, re提取表达式:">(.+?)</a></p>[0]3、简介,<div class="intro">超级畅销书作家书海沧生口口相传之作,承载千万读  者珍贵回忆的青春经典!第一年,她贪图美色,爱上他,一盆水泼出百年的冤家。第二年,他做了爸爸,她做了妈妈。孩子姓言,母温氏。历数十年之期,他们有了百年的家。</div>, re提取表达式:<div class="intro">(.+?)</div>4、分类,<p>类别:<a href="/wapsort/3_1.html">都市小说</a></p>,re提取表达式:">(.+?)</a></p>[1]5、图片,<td><img src="http://www.xs52.org/files/article/image/34/34351/34351s.jpg", re提取表达式:<td><img src="http://www.xs52.org/(.+?).jpg"6、链接,为本书进入网址
10、爬取文章,由于爬取图书为完本书籍,不考虑更新问题,
11、分析文章网址:从记事本提取文章url,book = book_34351,进行切割操作,book_code = str(book).split('_')[1]
12、拼接章节目录, chapters = 'chapters_'+book_code
13、拼接章节目录url,chapters_url = 'http://m.xs52.org/' + chapters
14、按照倒叙方式进入章节目录,url = 'ttp://m.xs52.org/chapters_rev_' + book_code
15、找到最顶部的一章,url: <li class="even"><a href="/book_34351/20856965.html">,re提取表达式:<li class="even"><a href="/(.+?).html">
16、15提取结果,book_34351/20856965,切割,str().split('/')[1]
17、提取总页数:"page-book-turn">第1/3页[30章/页] <,re提取表达式:page = '"page-book-turn">第1/(.+?)页[30章/页] <'
18、17提取结果,3,计算总章数,page_num = int(page)*30
19、16结果:x = 20856965,遍历执行累减操作,执行次数为18结果,每次减之后
20、拼接url,url = 'http://m.xs52.org/'+book_code+x.html,
21、获取文章内容,1、章节名称:<h1 class="nr_title" id="nr_title">第36章 镜头下生日快乐</h1>,re提取式:<h1 class="nr_title" id="nr_title">(.+?)</h1>2、章节内容,<div id="nr1"></div>,re:<div id="nr1">(.+?)</div>
22、将标题和内容拼接整合,每次结果存入txt文件

以上为第一次分析,实际写代码与上面不太相符,整体思路一致,实际操作过程中,将爬取进行了分割,两个程序,一个程序专门爬取小说信息,存入数据库,另一个程序爬取小说内容存入服务器磁盘,同时开启了8个线程分别进行进行抓取不同的分类,速度可以说挺快的,具体的爬虫代码如下。

import re
import json
import time
from datetime import datetime
from lxml import etree
import pymysql
import requests
import threading
def request(i):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',}r = requests.get(i)r.encoding = r.apparent_encodingcontent = r.textreturn content
def parse(html):r = re.compile('<a href="/(.+?)/"><img')book = r.findall(html)for book in book:# print(book)url = 'http://m.xs52.org/' + bookxx = request(url)try:book_content(con=xx, url=url, book_code=book)except:url = 'http://m.xs52.org/' + bookxx = request(url)book_content(con=xx, url=url, book_code=book)
def book_content(con, url, book_code):r = re.compile('<p><strong>(.+?)</strong></p>')try:book_name = r.findall(con)[0]except:book_name = ''r = re.compile('">(.+?)</a></p>')try:book_author = r.findall(con)[0]except:book_author = ''r = re.compile('<div class="intro">(.+?)</div>')try:book_abstact = r.findall(con)[0]except:book_abstact = ''r = re.compile('">(.+?)</a></p>')book_class = r.findall(con)[1]r = re.compile('<td><img src="http://www.xs52.org/(.+?)"')try:book_img = r.findall(con)[0]except:book_img = ''book_link = urlbook_img = 'http://www.xs52.org/' + str(book_img)connect = pymysql.connect(host='localhost', port=3306, user='book', password='book', db="book",cursorclass=pymysql.cursors.DictCursor)cursor = connect.cursor()sql = "insert into book value(null, '%s', '%s', '%s', '%s', '%s', '%s')" % (book_name, book_author, book_abstact, book_class, book_img, book_link)cursor.execute(sql)connect.commit()connect.close()print('%s爬取完成'%book_name)def a():for i in range(1, 37):url = 'http://m.xs52.org/wapsort/2_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))# except:#     parse(request(url))def b():for i in range(1, 72):url = 'http://m.xs52.org/wapsort/4_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))# except:# parse(request(url))def c():for i in range(1, 81):url = 'http://m.xs52.org/wapsort/1_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))# except:# parse(request(url))def d():for i in range(1, 701):url = 'http://m.xs52.org/wapsort/3_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))# except:# parse(request(url))def e():for i in range(1, 18):url = 'http://m.xs52.org/wapsort/5_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))def f():for i in range(1, 43):url = 'http://m.xs52.org/wapsort/6_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))def g():for i in range(1, 15):url = 'http://m.xs52.org/wapsort/7_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))def h():for i in range(1, 64):url = 'http://m.xs52.org/wapsort/8_' + str(i) + '.html'# x = request(url)print('正在爬取%s页' % i)# try:parse(request(url))if __name__ == '__main__':x = threading.Thread(target=a)y = threading.Thread(target=b)z = threading.Thread(target=c)d = threading.Thread(target=d)e = threading.Thread(target=e)f = threading.Thread(target=f)g = threading.Thread(target=g)h = threading.Thread(target=h)x.start()y.start()z.start()d.start()e.start()f.start()g.start()h.start()

flask专题-小说网站开发二(抓取数据)相关推荐

  1. 测试开发Python培训:抓取新浪微博抓取数据-技术篇

    测试开发Python培训:抓取新浪微博抓取数据-技术篇 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的sele ...

  2. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  3. 百度认为什么样的网站更有抓取和收录价值

    百度认为什么样的网站更有抓取和收录价值 百度认为什么样的网站更有抓取和收录价值呢?我们从下面几个方面简单介绍.鉴于技术保密以及网站运营的差异等其他原因,以下内容仅供站长参考,具体的收录策略包括但不仅限 ...

  4. 各大网站屏蔽搜索引擎抓取分析

    2019独角兽企业重金招聘Python工程师标准>>> 前面转载了一篇关于淘宝屏蔽百度的文章,但是那是其他人的看法,还是想发表一下 自己的看法,当然由于本人对屏蔽爬虫内幕了解不是很多 ...

  5. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法

    halo,大家好,我是特仑苏,今天呢给大家分享一些Python从网站抓取数据的一些方法,希望可以给大家带来一些帮助! 原作者:Octoparse团队 原出处:作品文(从网站抓取数据的3种最佳方法)/网 ...

  6. 用python做网站开发的课程_腾讯课堂:Flask Python Web 网站开发

    大家好,欢迎大家学习优品课堂出品的Python完全零基础入我们精讲的系列教程这节课 我们来看第一个,我们先了解一下计算机常识,这节课我们来介绍.计算机的概念和组成,那不仅是开发人员作为普通用户电脑的使 ...

  7. 从网站抓取数据并在 Excel 中整合

    从网站抓取数据并在 Excel 中整合 在本文中,我们将看到下一个练习使用 UiPath 的任务. 当您进入公司或作为自由职业者工作时,这将使您了解更多并为实时工作做好准备. 在这项任务中,我们更关注 ...

  8. Python案例快速入门之二:从页面抓取数据

    本章将直接开始一个从CSDN抓取数据的小例子. 新建如下文件 输入下面代码,从csdn抓取菜单列表 import requests from lxml import etreeurl="ht ...

  9. Python 抓取数据并可视化

    Python 抓取数据并数据可视化 前言 一.数据抓取篇 1.简单的构建反爬措施 2.解析数据 3.完整代码 二.数据可视化篇 1.数据可视化库选用 2.案例实战 (1).柱状图Bar (2).地图M ...

最新文章

  1. 使用Fiddler进行HTTP流量分析
  2. GARFIELD@01-19-2005
  3. 走近北京后厂村程序员的真实生活:“拿命换钱”
  4. java静态变量需要初始化吗_» Java静态变量初始化顺序浅谈
  5. mbsfn子帧_LTE多媒体广播多播业务关键技术研究
  6. iOS 之 Property List
  7. HDU - 2084 数塔
  8. Q96:PT(3):基于噪声的纹理(Noise-Based Textures)(0)——概述
  9. 【NeurIPS2020】之预训练语言模型压缩
  10. ati 缺少关键性文件_win10重装系统缺少计算机所需的介质驱动程序的解决方法
  11. IntelliJ IDEA教程()ideaIU-快速创建测试用例
  12. 你不知道的JavaScript(上中下)全册
  13. 阿里云OSS图片缩放处理
  14. java准确读取word文件页数
  15. jme-再现虎式坦克
  16. python画聚类树状图_影像组学学习笔记(36)-聚类树状图Dendrogram的python实现
  17. DFS【古希腊之争(一)】
  18. 批量生成各尺寸的iOS图标
  19. apache-poi之Excel使用API
  20. 雅虎日本如何用 Pulsar 构建日均千亿的消息平台

热门文章

  1. c语言程序设计冲刺串讲,C语言程序设计冲刺串讲.ppt
  2. mysql医学数据库_现代医学模式的特点是(  )
  3. 负反馈的类型及判定判别方法 及其优点
  4. 论文笔记-DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification
  5. 教你如何搭建编译服务器安装加密系统
  6. 软件测试专业山东大学好考吗,去山大复试跪了,谈谈我的血泪史,以资后来人...
  7. 重磅:3D光影已经完善,LayaAir2.6.0重构了阴影系统!
  8. MATLAB中输入微分方程dy表示,怎么用MATLAB求解如Dy = y+1/y 的微分方程
  9. 离职无须迁集体户口 新生儿也能落集体户口
  10. (四)浅谈OpenStack T版服务组件--Nova计算服务(#^.^#)