环境:pycharm3.6 mysql django
爬虫解析方式:bs4 +正则
爬取小说的网站: 笔下文学网 https://www.bxwxorg.com/
需求:获取玄幻、武侠、都市、历史 四类所有小说的信息 ,包括6个字段(book_id,小说名,小说作者,小说简介,小说最近更新时间,小说海报)
一、分析uirl:
点击进入玄幻类,发现共有50页 ,每页30本小说,点击第二页 url发生变化:
通过页数传递了参数 ,再来分析源代码
然后再随便打开了一本小说 分析源代码 :
发现是通过传递这本书的book_id 获取这本书的具体信息 ,于是要获得4个类的所有小说的信息,那么前提是要获得所有小说的book_id,再用book_id来逐个获取需要字段的信息。
二、爬虫代码实现
2.1 几次探索发现 所有类(玄幻、武侠等)的小说的第一页存储小说的class id == 和后面的n页是不相同的,这意味着第一页和后面的response不能用一种方法来解析,所以我先处理了所有小说类的第一页 ,然后在同时处理其他类的n页。
spider代码如下:
import requests
import re
import bs4
import time
import random
import pymysql
#打印报错url日志
def log_error(url):
error_list=