python 某江文学城小说标题爬虫+简单数据分析+词云可视化

1.简介

目标站点:某江文学城书库
爬虫工具:BeautifulSoup,requests
数据分析:pandas,matplotlib
词云:wordcloud,re

PS. 鉴于江湖上一直流传着某江老板抠门得很,程序员只有3个服务器也只有几台办公还在小区里面,建议爬的时候通过sleep放慢爬取速度,减少给服务器的压力。

2.爬虫

2.1 url解析

在文库首页上随便勾选几个选项试试,观察url的变化(注意【】框出的部分):

  • 性向:言情,按发表时间排序,只显示已完成,得到的url:
    https://www.jjwxc.net/bookbase.php?fw0=0&fbsj0=0&ycx0=0&【xx1=1】&mainview0=0&sd0=0&lx0=0&fg0=0&bq=&removebq=&【sortType=3】&collectiontypes=ors&searchkeywords=&【page=0】&【isfinish=2】

  • 性向:纯爱,按作品收藏排序,只显示无限制,跳转到第4页,得到的url:
    https://www.jjwxc.net/bookbase.php?fw0=0&fbsj0=0&ycx0=0&【xx2=2】&mainview0=0&sd0=0&lx0=0&fg0=0&bq=&removebq=&【sortType=4】&【page=4】&【isfinish=0】&collectiontypes=ors&searchkeywords=

总结出来几个参数:

  • 页数: page,从1开始(但0也是第一页)。上限为1000。
  • 性向:言情是xx1=1、纯爱xx2=2、百合xx3=3,如果要同时选择多个性向就一起写上
  • 排序方式:sortType,更新时间=1,作品收藏=4,发表时间=3,作品积分=2
  • 是否完结:isfinish,无限制=0,连载中=1,已完结=2

2.2 页面元素解析

想要爬取的数据如下:
在这里插入图片描述
按F12打开开发者工具,查看页面元素,发现所有信息在一个table中(class=“cytable”),每行是一个tr,每个单元格是一个td。
在这里插入图片描述

2.3 登录

尝试跳转到超过10的页面时会出现要求登录的界面:
在这里插入图片描述
登录晋江账号后,按F12打开开发者工具,打开network选项卡,刷新页面,寻找到对应数据包,在headers中复制cookie,加到爬虫的请求头中。
cookie

2.4 完整代码

import pandas as pd
import requests
import BeautifulSoup

def main(save_path, sexual_orientation):
	"""
	save_path: 文件保存路径
    sexual_orientation: 1:言情,2:纯爱,3:百合,4:女尊,5:无CP
    """
    for page in range(1, 1001):
        url = get_url(page, sexual_orientation)
        headers = {
   
            'cookie': 你的cookie,
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}
        html = requests.get(url, headers=headers)
        html.encoding = html.apparent_encoding
        try:
            data = parse(html.content)
        except:
            print("爬取失败:", page)
            continue
        if len(data) == 0:
            break
        df = pd.DataFrame(data)
        df.to_csv(save_path, mode='a', header=False, index=False)
        print(page)
        time.sleep(3)


def get_url(page, sexual_orientation):
    url = f"https://www.jjwxc.net/bookbase.php?fw0=0&fbsj0=0&ycx1=1&xx{
     sexual_orientation}={
     sexual_orientation}&mainview0=0&sd0=0&lx0=0&fg0=0&bq=-1&" \
          f"sortType=3&isfinish=2&collectiontypes=ors&page={
     page}"
    return url


def parse(document):
    soup = BeautifulSoup(document, "html.parser")
    table = soup.find("table", attrs={
   'class': 'cytable'})
    rows = table.
### 使用 AutoGPTQ 库量化 Transformer 模型 为了使用 `AutoGPTQ` 对 Transformer 模型进行量化,可以遵循如下方法: 安装所需的依赖包是必要的操作。通过 pip 安装 `auto-gptq` 可以获取最新版本的库。 ```bash pip install auto-gptq ``` 加载预训练模型并应用 GPTQ (General-Purpose Tensor Quantization) 技术来减少模型大小和加速推理过程是一个常见的流程。下面展示了如何利用 `AutoGPTQForCausalLM` 类来进行这一工作[^1]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer from auto_gptq import AutoGPTQForCausalLM model_name_or_path = "facebook/opt-350m" quantized_model_dir = "./quantized_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # 加载已经量化的模型或者创建一个新的量化器对象用于量化未压缩过的模型 gptq_model = AutoGPTQForCausalLM.from_pretrained(quantized_model_dir, model=model, tokenizer=tokenizer) ``` 对于那些希望进一步优化其部署环境中的模型性能的人来说,`AutoGPTQ` 提供了多种配置选项来自定义量化参数,比如位宽(bit-width),这有助于平衡精度损失与运行效率之间的关系。 #### 注意事项 当处理特定硬件平台上的部署时,建议查阅官方文档以获得最佳实践指导和支持信息。此外,在实际应用场景之前应该充分测试经过量化的模型以确保满足预期的质量标准。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值