欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python爬取17k小說

系統 2161 0

改一下用戶名和密碼可以直接用(要開通VIP才能抓VIP的章節),代碼如下:

            
              # -*- coding: utf-8 -*-
# @Time    : 2019/5/19 17:53
# @Author  : LM

import requests
from bs4 import BeautifulSoup
import json
import os


class Spider(object):
    def __init__(self):
        self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
        print('請輸入要爬取的小說名')
        self.novel_name = input()
        self.chapters_url = ''
        self.download_url_ls = {}
        self.loginName = ''
        self.password = ''

    def login(self):
        data = {
            'loginName': self.loginName,
            'password': self.password
        }
        login_url = 'https://passport.17k.com/ck/user/login'
        session = requests.Session()
        html = session.post(url=login_url, data=data, headers=self.headers).text
        json_data = json.loads(html)
        if json_data['status']['msg'] == 'succ':
            print('登陸成功,當前賬戶:{}'.format(self.loginName))
            return session
        else:
            print('用戶名或者密碼錯誤')

    def catalogue(self):
        url = 'https://search.17k.com/search.xhtml?c.st=0&c.q=' + self.novel_name
        html = requests.get(url=url, headers=self.headers).text
        soup = BeautifulSoup(html, 'lxml')
        res = soup.findAll(attrs={'class': 'textmiddle'})
        for i in res:
            info = i.select(' dl > dt > a')[0]
            searched_name = info.get_text().strip()
            if searched_name == self.novel_name:
                print('{}:查找成功'.format(self.novel_name))
                self.chapters_url = 'https://' + info.get('href')[2:].replace('book', 'list')
                break
            print('查找失敗,不存在該小說或拼寫錯誤')

    def get_download_url(self):
        html = requests.get(url=self.chapters_url, headers=self.headers)
        html.encoding = 'utf-8'
        soup = BeautifulSoup(html.text, 'lxml')
        volume = soup.find_all('dl', class_='Volume')
        for c in volume:
            chapters_res = BeautifulSoup(str(c), 'lxml')
            all_chapters = chapters_res.find_all('a', target='_blank')
            for each_chapter in all_chapters:
                download_url = each_chapter.get('href').strip()
                is_vip = each_chapter.find_all('span')[0].get('class')[1]
                self.download_url_ls['{}'.format(download_url)] = is_vip

    def download_content(self):
        session = self.login()
        if os.path.exists('./{}.txt'.format(self.novel_name)):
            os.remove('./{}.txt'.format(self.novel_name))
            print('小說存在,已刪除')
        print('開始爬取小說:{}'.format(self.novel_name))
        for u in self.download_url_ls.keys():
            if self.download_url_ls[u] == '':
                url = 'https://www.17k.com' + u
                html = requests.get(url=url, headers=self.headers)
                html.encoding = 'utf-8'
                soup = BeautifulSoup(html.text, 'lxml')
                read_area = soup.find_all('div', class_='readAreaBox content')[0]
                title = read_area.select('h1')[0].get_text()
                print('正在爬取章節:{}'.format(title))
                content = ''
                for c in read_area.select('p'):
                    content += '    ' + c.get_text() + '\n'
            else:
                book_id = u.split('/')[2]
                chapter_id = u.split('/')[3].split('.')[0]
                url = 'https://www.17k.com/ck/book/{}/chapter/{}?subAllPrice=1&appKey=2406394919'.format(book_id, chapter_id)
                html = session.get(url=url, headers=self.headers).text
                #print(html)
                json_data = json.loads(html)
                title = json_data['data']['name']
                print('正在爬取章節:{}'.format(title))
                content = '    ' + json_data['data']['content'][0]['text'].replace('\r', '')
            with open('./{}.txt'.format(self.novel_name), 'a', encoding='utf-8') as f:
                f.write(title + '\n\n')
                f.write(content)
                f.write('\n\n')
        print('爬取完成。')


if __name__ == "__main__":
    s = Spider()
    s.catalogue()
    s.get_download_url()
    s.download_content()



            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 刮伦人妇A片1级 | 日韩欧美亚洲一区 | 五月天婷婷在线视频国产在线 | 精品无人乱码一区二区三区 | 精品综合久久久久久99 | 日本高清www午色夜黄 | 日韩欧美视频一区二区三区 | 男女真实有遮挡xx00动态图 | 国产一区二区欧美 | 国产成人高清视频免费播放 | 国产精品久久久久无码av | 欧美综合国产精品久久丁香 | 亚洲国产片高清在线观看 | 色情女教师3波多野结衣 | 一区二区成人国产精品 | 日韩有码一区 | 国产传媒网址 | 国产精品久久久久久久久久免费 | 99久久久国产精品露出 | 99亚洲精品高清一二区 | 99亚洲精品高清一二区 | 五月婷婷啪 | v片在线看 | 九九九久久久久久久爱 | 亚洲久久久久 | 日韩在线免费 | 成人亚洲A片V一区二区三区婷婷 | 国产97人妻人人做人碰人人爽 | 午夜理伦三级理论三级在线观看 | 久久久精品影院 | 免费成人电影在线 | 超碰在线国产 | 免费毛片网站 | 久久久久久国产精品 | 欧美午夜在线 | 男女真实无遮挡xx00动态图120秒 | aaa毛片手机在线现看 | 日韩欧美亚洲 | 国产精品免费观看 | 久久影视一区 | 日韩精品一区二区电影 |