溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python抓取糗事百科笑話

發布時間:2022-01-18 10:29:54 來源:億速云 閱讀:664 作者:清風 欄目:開發技術

這篇文章將為大家詳細講解有關如何使用python抓取糗事百科笑話,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

抓取流程:傳入參數起始url和輸出文件名稱,使用urllib2對頁面進行抓取,每次抓取一個頁面,循環抓取,直到最后一頁。使用正則表達式對抓取到的頁面內容進行提取,并保存到文件中。程序如下:

# -*- coding: utf-8
import urllib2
import urllib
import re,os
import time
class Joke:
    #初始化數據
    def __init__(self,start_url,out_put_file):
        self.start_url = start_url
        self.out_put_file = out_put_file
        self.page = 2
        self.user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        self.headers = { 'User-Agent' : self.user_agent }


    #獲取頁面內容的方法
    def get_cotent(self,page):
        try:
            url = self.start_url + str(page) + '/?s=4955352'
            request = urllib2.Request(url,headers=self.headers)
            response = urllib2.urlopen(request)
            act_url = response.geturl()
            print 'init url=',url,'act url=',act_url
            if url == act_url:
                content = response.read()
                return content
            else:
                return None
        except urllib2.URLError, e:
            if hasattr(e,"reason"):
                print u"連接糗事百科失敗,錯誤原因",e.reason
                return None


    #傳入頁面代碼,返回笑話內容
    def get_joke(self,page):
        joke_content = self.get_cotent(page)
        str = ''
        if not joke_content:
            print "抓取完畢"
            return None
        pattern = re.compile('<div class="author clearfix">.*?<h3>(.*?)</h3>.*?'
        +'<div class="content">.*?<span>(.*?)',re.S)
        items = re.findall(pattern,joke_content)
        for item in items:
            str = str + '發布人:' + item[0] + '\n' + '發布內容:' + '\n' + item[1] + '\n'+ '\n'
        return str


    #講抓取到的笑話保存到文件的方法
    def writeStr2File(self,out_put_file,str1,append = 'a'):
        # 去掉文件,保留路徑。比如 'a/b/c/d.txt' 經過下面代碼會變成 'a/b/c'
        subPath = out_put_file[:out_put_file.rfind('/')]
        # 如果給定的路徑中,文件夾不存在,則創建
        if not os.path.exists(subPath):
            os.makedirs(subPath)
        # 打開文件并將 str 內容寫入給定的文件
        with open(out_put_file, append) as f:
            f.write(str1.strip()+'\n')


    #開始抓取頁面內容,每次抓取一個頁面,直到抓取完畢所有頁面
    def start_crawl(self):
        while True:
            joke_str = self.get_joke(self.page)
            if not  joke_str:
                break
            time.sleep(1)
            #print(joke_str)
            self.writeStr2File(self.out_put_file,joke_str)
            self.page+=1


spider = Joke('http://www.qiushibaike.com/hot/page/','d:/python/test/out.txt')
spider.start_crawl()

python的五大特點是什么

python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。

關于“如何使用python抓取糗事百科笑話”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女