吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7173|回复: 25
收起左侧

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

  [复制链接]
执念i_ 发表于 2018-8-9 18:32
本帖最后由 执念i_ 于 2018-8-9 19:07 编辑

这次爬小说站笔趣阁各大分类里的小说: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文件

代码太长了,这里贴一部分的,完整源码在下面有下载:
[Python] 纯文本查看 复制代码
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


小白学习作品,请各位大佬多多指教
wwwbiqutxtcom.rar (2.14 KB, 下载次数: 96)
源码下载:https://www.lanzouj.com/i1lyqah
评分免费免费免费{:1_919:}

免费评分

参与人数 6吾爱币 +6 热心值 +6 收起 理由
破小白 + 1 + 1 我很赞同!
yy89 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lin_xop + 1 + 1 热心回复!
F0rM + 1 + 1 用心讨论,共获提升!
zuiai125520 + 1 + 1 谢谢@Thanks!
小小白/X + 1 + 1 看不明白

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 执念i_ 发表于 2019-8-23 22:12
sushao 发表于 2019-8-18 17:12
大佬大佬!!!!我翻了很多人的代码你是唯一一个最好的,能完整下载的,求优化大佬!最好的是各章单个文件 ...

储存的名字改一下就行了呀
sushao 发表于 2019-8-18 17:12
大佬大佬!!!!我翻了很多人的代码你是唯一一个最好的,能完整下载的,求优化大佬!最好的是各章单个文件名字是章节名称最好不知道大佬是否可以实现!!!
 楼主| 执念i_ 发表于 2018-8-9 18:48
老M 发表于 2018-8-9 19:16
路过看看哈哈哈哈啊
书枕有梦 发表于 2018-8-9 19:50
学习了,学习了
MarinYY 发表于 2018-8-9 20:24
路过看看哈哈哈哈啊
591888122 发表于 2018-8-9 20:32
学习了大佬
笨笨猪 发表于 2018-8-9 21:52
代码很规范啊,headers可以设成全局变量,包括list那个参数建议修改。
demon_lin 发表于 2018-8-10 00:35
路过观摩观摩
陈家丶妖孽 发表于 2018-8-10 11:44
也在练习爬虫,看看你的案例拿来练习一下~
a826472071 发表于 2018-8-10 12:11
路过看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 18:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表