初練習python爬虫類:全書網を登る-『墓を盗むノート』

14240 ワード

自分で半年pythonを勉強しましたが、ほとんどの時間はDjangoでweb開発をしています.今日突然ボスcueから同僚にpython(会社の主業はerpで、pythonを使うのは少ない)を少し話して、彼らを案内しましょう.しかし、私自身は入門したばかりなのか、それとも半瓶が揺れているのか.しかし、私はすべて承諾して、それでは方法を考えてdemoをしなければならなくて、少なくとも彼らにpythonのすごいところを見せてあげましょう、困っている时、何気なくw 3 cのpython 3教程を開けて、爬虫類の実戦を見て、私はこれがいくつかの人の興味を引き起こすことができると思って、同僚を誘拐してpythonの泥棒船に乗るかもしれません.これまで爬虫類の知識に触れたことがなく、午後になって、チュートリアルに従ってこのプログラムを完成しました.短い時間で小さなタスクを自分で実現できるのもpythonの大きなメリットでしょう.原文はW 3 C-python 3チュートリアル-python 3爬虫実戦チュートリアル、最初のチュートリアルです.(原文の原文は当駅の大物Jack-Cui~)自分の結果だけを示すので、何の役にも立たない.もちろん、直接copyの大物のプログラムはきっとだめで、1つは时間が长くて、笔趣はウェブサイトを见て反爬のメカニズムがあって、登りたいのは私の今の3足の猫のカンフーができるのではありませんて、だから私は反爬の全書のネットを交換しました;二つ目はウェブサイトのコードの問題で、なぜ大物が出会っていないのか分かりませんが、私は出会って、解決方法を勉強してここから来ました.
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import sys

'''
   :  ‘   ’(http://www.quanshuwang.com/)  《    》
input:none
return: none
author: wxy
last change: 2019/03/22 
'''
class Downloader():

    def __init__(self):
        self.server = 'http://www.quanshuwang.com/'
        self.target = 'http://www.quanshuwang.com/book/9/9055/'
        self.header = {
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)',
        }
        self.names = []     #   
        self.urls = []      #    
        self.nums = 0       #   

    #       、    
    def get_download_url(self):
        req = requests.get(url=self.target)
        req.encoding = 'GBK'
        html = req.text
        div_bf = BeautifulSoup(html)
        div = div_bf.find_all('div', class_='dirconone')
        a_bf = BeautifulSoup(str(div[0]))
        a = a_bf.find_all('a')
        self.nums = len(a)  #      
        for item in a:      #        url
            self.names.append(item.string)
            self.urls.append(item.get('href'))

    #       :
    # target:    
    def get_contents(self,target):
        req = requests.get(url=target)
        req.encoding = 'GBK'
        html = req.text
        bf = BeautifulSoup(html)
        texts = bf.find_all('div', class_='mainContenr')
        texts = texts[0].text
        return texts

    #             
    # name:    
    # path:     ,     
    # text:    
    def writer(self, name, path, text):
        write_flag = True
        with open(path, 'a', encoding='utf-8') as f:
            f.write(name + '
'
) f.writelines(text) f.write('

'
) if __name__ == '__main__': header = { 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)', } # ## # target = 'http://www.quanshuwang.com/book/9/9055/9674263.html' # req = requests.get(url=target,headers=header) # req.encoding = 'GBK' # html = req.text # bf = BeautifulSoup(html) # texts = bf.find_all('div', class_='mainContenr') # print(texts[0].text) # # : # target = 'http://www.quanshuwang.com/book/9/9055/' # req = requests.get(url=target) # req.encoding = 'GBK' # html = req.text # div_bf = BeautifulSoup(html) # div = div_bf.find_all('div', class_='dirconone') # print(div[0]) # # url: # target = 'http://www.quanshuwang.com/book/9/9055/' # req = requests.get(url=target) # req.encoding = 'GBK' # html = req.text # div_bf = BeautifulSoup(html) # div = div_bf.find_all('div', class_='dirconone') # a_bf = BeautifulSoup(str(div[0])) # a = a_bf.find_all('a') # for item in a: # print(item.string,item.get('href')) # : dl = Downloader() dl.get_download_url() print('《 》 :') for i in range(dl.nums): dl.writer(dl.names[i], ' .txt', dl.get_contents(dl.urls[i])) sys.stdout.write(" :%.3f%%" % float(i/dl.nums) + '\r') sys.stdout.flush() print('《 》 ')