吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4662|回复: 8
收起左侧

[Python 转载] 小说爬虫

  [复制链接]
TzzFly 发表于 2019-1-30 14:25
本帖最后由 TzzFly 于 2019-1-30 15:10 编辑

今天下雨了在家没事干,突然想看小说了,就把以前写的一个爬虫拿出来改了一下还搞他   http://www.biquyun.com 毕竟好搞嘛


利用抓包工具抓包,发现使用它的搜索功能是对url进行了编码,搜索发出的请求是 "http://www.biquyun.com/modules/article/soshu.php?searchkey=+"要搜索的内容的gb2312编码
比如我要搜索“逆天邪神”它的请求地址是“http://www.biquyun.com/modules/article/soshu.php?searchkey=+%C4%E6%CC%EC%D0%B0%C9%F1”   
通过from urllib.request import quote         quote(name,encoding = "gbk")可实现对编码
先用requests模块发个get请求发现 response乱码,      html = response.text.encode('iso-8859-1').decode('gbk')  文本是中文的时候,获取的数据是iso8859-1编码的,进行数据操作时会出现乱码。
然后把获取到的内容处理一下 我是直接把它复制到一个字符串里边 然后测试一下 就简单的用 a ,b 什么的表示了
soup = BeautifulSoup(a,"lxml")
a = soup.find_all('div',id="list")
soup = BeautifulSoup(str(a[0]),"lxml")
b = soup.find_all("a")     这时候输出是这样的  <a href="/4_4027/2348399.html">第8章 大婚之夜</a>
for a in b:
        print (a.string,'http://www.biquyun.com/'+a.get("href"))   利用使用a.get("href")方法获取herf 的属性值,a.string获取章节名称
然后开始获取内容 随便找一章把内容抓下来测试  还是  a ,b 别嫌弃

soup = BeautifulSoup(a,"lxml")
a = soup.find_all('div',id="content")   内容都在这里 然后
a[0].text.replace('\xa0'*8,'\n\n')           这里的text主要是去除<br/>标签 replace是删除空格
接着写入文本
然后放到一块整理一下,一个简单的爬虫就做好了  我代码写得并不好看,你们要是觉得哪里不python了告诉我
很乐意接受建议     (看小说当然是手机好用了,所以可以下载一个termux,然后安装个python,挂个软链接到某文件夹)

[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-[/size][/font][/color][/color][/size][/font]import requests
from bs4 import BeautifulSoup
from urllib.request import quote
class downloader(object):
 
    def __init__(self):
        self.names = []            #存放章节名
        self.urls = []            #存放章节链接
        self.nums = 0            #章节数
    def url_gbk(self,name):
        url1 = "http://www.biquyun.com/modules/article/soshu.php?searchkey=+"
        url = url1 + quote(name,encoding = "gbk")
        return url

    def html(self,url):
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:22.0) Gecko/20130405 Firefox/22.0'}
        response = requests.get(url,headers = headers)
        html = response.text.encode('iso-8859-1').decode('gbk')
        soup = BeautifulSoup(html,"lxml")
        a = soup.find_all('div',id="list")
        soup = BeautifulSoup(str(a[0]),"lxml")
        b = soup.find_all("a")
        self.nums = len(b)
        for a in b:
            self.names.append(a.string)
            self.urls.append('http://www.biquyun.com/'+a.get("href"))

    def reorganize(self, target):
        r = requests.get(url = target)
        a = r.text
        soup = BeautifulSoup(a,"lxml")
        text = soup.find_all('div',id="content")
        texts = text[0].text.replace('\xa0'*8,'\n\n')
        return texts

    def writer(self, name, path, text):
        write_flag = True
        with open(path, 'a', encoding='utf8') as f:
            f.write(name + '\n')
            f.writelines(text)
            f.write('\n\n')

if __name__ == "__main__":
    name = input("小说名称:")
    dl = downloader()
    url = dl.url_gbk(name)
    dl.html(url)
    print(name +'开始下载:')
    for i in range(dl.nums):
        print(dl.names[i])
        dl.writer(dl.names[i], name +'.txt', dl.reorganize(dl.urls[i]))        
    print(name +'下载完成')
QQ图片20190130142314.jpg

免费评分

参与人数 2吾爱币 +4 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
liangbigsun + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

liangbigsun 发表于 2019-1-30 14:48
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
君君啊 发表于 2019-1-30 15:24
#history 发表于 2019-1-30 15:27
410791007 发表于 2019-1-30 15:39
求大神教下这类爬虫代码具体要怎么使用?好多爬虫代码真的有用,可惜我是真小白,不会用。
18311861765 发表于 2019-1-30 15:51
你让我们伸手党怎么办
依旧沉沉 发表于 2019-1-30 16:06
能教教我python不,厚脸皮问一下
rxxcy 发表于 2019-1-30 16:18
你们的手机是真的牛逼,什么都能做
 楼主| TzzFly 发表于 2019-1-30 17:40
rxxcy 发表于 2019-1-30 16:18
你们的手机是真的牛逼,什么都能做

手机当然是用来折腾了,越折腾越开心
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-30 05:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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