乐愚社区Beta

 编程语言  >  [Python]小白学爬虫之pyquery爬取小说站

[Python]小白学爬虫之pyquery爬取小说站

Walker  管理员   L12  • 2018-09-04 • 回复 4 • 最后编辑于2018-09-04 23:40 • 只看楼主举报    

这次爬小说站笔趣阁各大分类里的小说:www.biqutxt.com
大概能把这个站一大半爬下来
交代环境:Python3.6,pyquery

分析网页:

发现网页分类的url是 '首页地址' + '分类全拼'
eg:http://www.biqutxt.com/xuanhuanxiaoshuo/
然后大分类下的文章列表很简单
发现每页只有30本书
每页的url是 '首页地址' + '分类全拼' + '分类序号' + '_' + '页码' + '.html'
eg:http://www.biqutxt.com/xuanhuanxiaoshuo/1_1.html

爬取思路:

  1. 请求大分类,比如玄幻小说救赎:请求 http://www.biqutxt.com/xuanhuanxiaoshuo
  2. 获取大分类下小说列表的总页码
  3. 请求每一页的链接,获取每一页每本书的链接
  4. 请求每本书的链接,然后获取每一章的详细信息和书本简介
  5. 剔除不需要的信息,12条最新章节的信息
  6. 保存为TXT文件

代码太长了,这里贴一部分的,完整源码在下面有下载:

from pyquery import PyQuery as pq
import requests
from requests.exceptions import RequestException
import os
import multiprocessing
 
def get_index_fenlei(urls):  # 获取网页内容
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/67.0.3396.99 Safari/537.36'
    }
    try:
        html = requests.get(url=urls, headers=headers)
        if html.status_code == 200:
            return html.content.decode('gbk')
        return None
    except RequestException:
        return None
 
def parse_one_page(html, page_1, url, classification):  # 解析类别转换为pyquery对象
    doc = pq(html)
    pages = doc('#pagelink .last').text()  # 获取总页码数
    print("此分类共有 :", pages, '页')
    list = []  # 创建列表存放页码链接
    for page_2 in range(int(pages)):  # 总页码循环获取每一页的链接
        page_2 = page_2 + 1
        page_url = url + str(page_1) + '_' + str(page_2) +'.html'  #拼接页码链接
        # print(page_url)
        list.append(page_url)
    print('页码链接获取成功-------------')
    yemashu = 1
    for book in list:  # 遍历页码列表
        print('正在请求第---', str(yemashu), '---页')
        html = get_page_bookurl(book)  # 请求每一页
        pare_page_bookurl(html, classification)  # 获取每一页书的链接信息
        yemashu = yemashu + 1
 
def get_page_bookurl(bookurl):  # 解析页码网页转换为pyquery对象,获取每本书的链接
    url = bookurl
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/67.0.3396.99 Safari/537.36'
    }
    try:
        html = requests.get(url=url, headers=headers)
        if html.status_code == 200:
            print('请求本页成功')
            return html.content.decode('gbk')
        return None
    except RequestException:
        return None

源码下载:蓝奏云链接


4条回帖
寒心烟雨情  L2  评论于
(0)  回复(1) 1#
我居然才注意到编程版块出来了
Walker 楼主 :还在测试中。。。
发表在2018-09-05 回复
  
:)
1982262856  L1  评论于
(0)  回复(0) 2#
支持 学习了
DDUU  L0  评论于
(0)  回复(0) 3#
怎么发上面那种黑色背景的代码框
还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部