Python 學習記錄4

import requests,re,time,urllib,os,random
from urllib import request
from bs4 import BeautifulSoup

headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
cookies = {"cookie": "_T_WM"}
class Weibo(object):
    def __init__(self,url):
        self.url = url
        self.dir = "C:\\Users\\Desktop\\Python\\Weibo"
    #input any url
    def getType(self):
        url_split = self.url.split('/')
        user = url_split[3]
        if user == str():
            flag = 1
        else:
            flag = 0
        return flag
    # input the first page url
    def getPage(self):
        Html = requests.get(self.url,cookies=cookies,headers=headers).text
        pagereg = r'value="(\d+)"'
        pages = re.compile(pagereg).findall(Html)
        if len(pages) == 0:
            page = 1
        else:
            page = pages[-1]
        return page
    # input any url
    def getUrl(self):
        Html = requests.get(self.url,cookies=cookies,headers=headers).text
        Soup = BeautifulSoup(Html,'lxml')
        return Html,Soup
    # Input the first page url
    def getBasicInfo(self):
        OneHtml = requests.get(self.url,cookies=cookies,headers=headers).text
        OneSoup = BeautifulSoup(OneHtml,'lxml')
        ID_reg = r'<a href="/(\d+)/info"'
        fans_reg = r'<a href=".+?/fans">粉絲\[(\d+)\]</a>'
        name_reg = r'<title>(.+?)的微博</title>'
        ID = re.compile(ID_reg).findall(OneHtml)[0]
        fans = re.compile(fans_reg).findall(OneHtml)[0]
        name = re.compile(name_reg).findall(OneHtml)[0]
        people_dir = self.dir + '\\' + str(name)
        if not os.path.isdir(people_dir):
            os.mkdir(people_dir)
        info_url = "https://weibo.cn/" + str(ID) + "/" + "info"
        return name,fans,info_url,people_dir
    # Input the info page url
    def getDetailInfo(self):
        InfoHtml = requests.get(self.url,cookies=cookies,headers=headers).text
        # 學校
        xx = r'<div class="tip">學習經歷</div><div class="c">(.+?)<br/>'
        xuexiao = re.compile(xx).findall(InfoHtml)
        if len(xuexiao) != 0:
            info_school = "學校" + ':' + xuexiao[0] + '\n'
        else:
            info_school = "學校:Missing" + '\n'
        # 性別
        xb = r'<br/>性別:(.+?)<br/>'
        xingbie = re.compile(xb).findall(InfoHtml)
        if len(xingbie) != 0:
            info_xb = "性別" + ':' + str(xingbie[0]) + '\n'
        else:
            info_xb = "性別:Missing"
        # 地區
        dq = r'<br/>地區:(.+?)<br/>'
        diqu = re.compile(dq).findall(InfoHtml)
        if len(diqu) != 0:
            info_dq = "地區" + ':' + str(diqu[0]) + '\n'
        else:
            info_dq = "地區:Missing"
        # 生日
        sr = r'<br/>生日:(.+?)<br/>'
        shengri = re.compile(sr).findall(InfoHtml)
        if len(shengri) != 0:
            info_sr = "生日" + ':' + str(shengri[0]) + '\n'
        else:
            info_sr = "生日:Missing" + '\n'
        # 簡介
        jjie = r'<br/>簡介:(.+?)<br/>'
        jianjie = re.compile(jjie).findall(InfoHtml)
        if len(jianjie) != 0:
            info_jjie = "簡介" + ':' + str(jianjie[0]) + '\n'
        else:
            info_jjie = "簡介:Missing" + '\n'

        return info_school,info_xb,info_dq,info_sr,info_jjie

def one(html,dir):
    s = r'src="(.+?)wap180/.+?"/></a>'
    e = r'src=".+?/wap180/(.+?)"/></a>'
    ss = re.compile(s).findall(html)[0]
    ee = re.compile(e).findall(html)[0]
    url = ss + "large/" + ee
    print(url)
    curdir = dir + '\\'
    urllib.request.urlretrieve(url, '{}{}.jpg'.format(curdir, ee))

def group(html,dir):
    reg = r'<(a href=".+?">.+?)</a>'
    regre = re.compile(reg)
    lists = regre.findall(html)
    for i in lists:
        if u'組圖' in i:
            ureg = r'a href="(https.+?)">'
            uregre = re.compile(ureg)
            gro_url = uregre.findall(i)[0]
            print(gro_url)
            Group = Weibo(gro_url)
            html,soup = Group.getUrl()
            img = r'img src="(http.+?)".+?原圖'
            imgre = re.compile(img)
            imgurl = imgre.findall(html)
            #print("imgurl",imgurl)
            for u in imgurl:
                u = str(u)
                s = r'^(.+?)thumb180/.+?'
                e = r'.+?/thumb180/(.+?)$'
                ss = re.compile(s).findall(u)[0]
                ee = re.compile(e).findall(u)[0]
                uu = ss + "large" + '/' + ee
                print(uu)
                curdir = dir + '\\'
                urllib.request.urlretrieve(uu, '{}{}'.format(curdir, ee))
                time.sleep(1)
        time.sleep(1)

def getInfo(url):
    basic = Weibo(url)
    page = basic.getPage()
    name,fans,info_url,people_dir = basic.getBasicInfo()
    detail = Weibo(info_url)
    xx,xb,dq,sr,jjie = detail.getDetailInfo()
    file = people_dir + '\\' + name + ".txt"
    fo = open(file,'w',encoding=('utf-8'))
    fo.write("昵稱:" + name + '\n');fo.write(xb);fo.write(sr)
    fo.write("粉絲:" + fans + '\n');fo.write(xx);fo.write(dq)
    fo.write(jjie);fo.write("目錄:" + people_dir + '\n')
    print(name + ":Info write done!")
    return page,people_dir

def getLastWeiboTime(url):
    time_html,time_soup = Weibo(url).getUrl()
    wb_list = time_soup.find_all('div',class_="c")
    leng = len(wb_list)
    i = 0
    time_list = []
    for i in range(leng):
        weibo = str(wb_list[i])
        #print(wb_list[i])
        if u'置頂' not in weibo and u'贊' in weibo :
            reg = r'<span class="ct">(.+?)<'
            real_time = re.compile(reg).findall(weibo)[0]
            time_list.append(real_time)
    print(time_list[0])

def getWeibo(ori):
    url = ori + "?page="
    pages,dir = getInfo(url)
    for p in range(1,int(pages) + 1):
        cur_url = url + str(p)
        print("第" + str(p) + "頁")
        try:
            Page = Weibo(cur_url)
            page_html,page_soup = Page.getUrl()
            wbs = page_soup.find_all('div',class_="c")
            for w in wbs:
                con = str(w)
                #print(con)
                if u'原圖' in con and u'轉發了' not in con and u'轉發理由' not in con:
                    #print(con)
                    if u'組圖' in con:
                        #print(con)
                        print("組圖")
                        group(con, dir)
                        time.sleep(1)
                    else:
                        #print(con)
                        print("單圖")
                        one(con, dir)
                        time.sleep(1)
        except:
            time.sleep(1)
            continue
    print("Img downloads Done!")

oris = [""]
for ori in oris:
    getWeibo(ori)
    getLastWeiboTime(ori)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374