05 如何在知乎上自動(dòng)互粉、商品上架提醒袒哥、拉勾網(wǎng)職位提醒

任務(wù)

image.png

問題拆解



# Windows版的代碼請(qǐng)?jiān)谶@下載:https://video.mugglecode.com/net5.py
# 以下為Mac/Linux/可在麻瓜編程在線運(yùn)行的代碼:

from selenium import webdriver
import time

# 運(yùn)行前先下載 chrome driver,下載地址是:https://sites.google.com/a/chromium.org/chromedriver/downloads缩筛,點(diǎn)擊【Latest Release: ChromeDriver x.xx】進(jìn)入下載

def start_chrome():
    driver = webdriver.Chrome(executable_path='./chromedriver') # Windows 需寫成'./chromedriver.exe'
    driver.start_client()
    return driver

def find_strangers():
    # btn
    btn_sel = 'div.ContentItem-extra > button.Button--blue'
    elems = driver.find_elements_by_css_selector(btn_sel)
    return elems

def add_fren():
    pass


while True:
    url = 'https://www.zhihu.com/'
    follower_url = 'https://www.zhihu.com/people/xxx/followers' #需替換成你的知乎url,點(diǎn)擊【我的主頁】→【關(guān)注者】可進(jìn)入該頁面
    driver = start_chrome()
    driver.get(url)
    if not driver.get_cookies():
        push()
    time.sleep(20)
        # wait login

    driver.get(follower_url)
    time.sleep(6) # wait for loading page & users
    strangers = find_strangers()
    for s in strangers:
        s.click()
        time.sleep(3)
    print('Done!')
    time.sleep(3000)
# js_execute('xxx.click()')

商品上架提醒這一部分需要考慮的是樣品的標(biāo)簽名稱堡称。另外pyautogui庫(kù)里面的alert方法可以提醒瞎抛。

from selenium.webdriver import Chrome
import pyautogui
import webbrowser
import time


class PageObserver:

    def __init__(self, url, target_sel):
        self.driver = Chrome(executable_path='./chromedriver')
        self.url = url
        self.target_sel = target_sel
        self.request_time = 20
        #self.driver.find_elements_by_css_selector(self.target_sel)

    def is_changed(self):
        self.driver.get(self.url)
        time.sleep(self.request_time)
        oos_el = self.driver.find_elements_by_css_selector(self.target_sel)
        buy_button = self.driver.find_elements_by_id('update-cart')
        # -> []
        print(oos_el)
        print(buy_button)
        if not oos_el and buy_button:
            return True


def alert():
    pyautogui.alert('The bag is available')



# find changes
url = 'https://www.strathberry.com/products/east-west-mini-tri-colour-navy-ruby-vanilla'
target_sel = 'div.oos.swatch-container.swatch-3-colours.active-colour'

fake_url = 'https://www.strathberry.com/products/east-west-mini-black-with-eyelets'
fake_target_sel = 'oss.swatch-container.swatch-1-colours.active-colour'

target = PageObserver(url=fake_url, target_sel=fake_target_sel)
while True:
    if target.is_changed():
        alert()
        webbrowser.open(fake_url)
        target.driver.close()
    else:
        print('Nope!')

拉勾網(wǎng)職位提醒

其實(shí)爬取的時(shí)候面向?qū)ο筮€是面向過程, 這個(gè)代碼可以來對(duì)比一下的却紧。
面向過程的時(shí)候呢:


面向過程

面向?qū)ο罂梢钥醋鍪敲嫦蜻^程的一種擴(kuò)展桐臊,也是一種比較友好的形式。


面向?qū)ο?/div>
# get_page() -> parse_page() -> filter_job() -> send()
'''
raw_html = []
for i in range(1, 30):
    page = get_page()
    raw_html.append(page)

all_jobs = []
for html in raw_html:
    jobs = parse(html)
    all_jobs.append(jobs)

for job in all_jobs:
    result = filter_job(job)
    if result:
        send(job)
'''

# Spider -> Parser -> Job

'''
s = Spider()
raw_pages = s.crawl(url)
p = Parser(raw_pages)
jobs = p.get_jobs()

for j in jobs:
    if j.is_today():
        j.send_to_me()
'''
from selenium.webdriver import Chrome
from bs4 import BeautifulSoup
import time
# https://www.lagou.com/zhaopin/qukuailian/12/
class Spider:
    def __init__(self, index_url, page_range):
        self.page_range = page_range + 1
        self.index_url = index_url
        self.raw_pages = []
        self.boot()

    def boot(self):
        self.chrome = Chrome(executable_path='./chromedriver')
        self.chrome.start_client()

    def crawl(self):
        for num in range(1, self.page_range):
            full_url = f'{self.index_url}{num}/'
            self.chrome.get(full_url)
            print('Wait for loading page')
            time.sleep(3)
            single_html = self.chrome.page_source
            #本來這個(gè)瀏覽器應(yīng)該打開就處理晓殊,但是也可以一次性網(wǎng)頁都加載完再挨個(gè)處理断凶,這個(gè)可以存內(nèi)容的。巫俺,
            self.raw_pages.append(single_html)
            print('Done')


class Parser:

    def __init__(self, raw_pages):
        self.raw_pages = raw_pages
        self.jobs = []

        self.parse()

    def parse(self):
        for html in self.raw_pages:
            soup = BeautifulSoup(html, 'html.parser') #這里注意是html.parser
            time_sel = 'ul span.format-time'
            comp_sel = 'ul .company_name > a'
            link_sel = 'ul a.position_link'

            time_els = soup.select(time_sel) # list
            comp_els= soup.select(comp_sel)  # list
            link_els= soup.select(link_sel)  # list
            for t,c,l in zip(time_els, comp_els, link_els):

                cell = {  #字典方便查詢
                    'time':t.text,
                    'comp':c.text,
                    'link':l.get('href')
                }
                self.jobs.append(cell)
                # [{},{}]
    def get_jobs(self):
        return [Job(j) for j in self.jobs]



class Job:

    def __init__(self,data):

        self.time = data.get('time')
        self.comp = data.get('comp')
        self.link = data.get('link')


    def is_today(self):
        return ':' in self.time # -> T or F

    def send(self):
        pass

    def save_into_csv(self):
        pass


s = Spider(
    index_url='https://www.lagou.com/zhaopin/qukuailian/',
    page_range=2
)
s.crawl()
p = Parser(s.raw_pages)
jobs = p.get_jobs()
for j in jobs:
    if j.is_today():
        print(j.comp,j.link)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末认烁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子识藤,更是在濱河造成了極大的恐慌砚著,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痴昧,死亡現(xiàn)場(chǎng)離奇詭異稽穆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赶撰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門舌镶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豪娜,你說我怎么就攤上這事餐胀。” “怎么了瘤载?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵否灾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我鸣奔,道長(zhǎng)墨技,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任挎狸,我火速辦了婚禮扣汪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锨匆。我一直安慰自己崭别,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茅主,像睡著了一般舞痰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暗膜,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天匀奏,我揣著相機(jī)與錄音,去河邊找鬼学搜。 笑死娃善,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瑞佩。 我是一名探鬼主播聚磺,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼炬丸!你這毒婦竟也來了瘫寝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤稠炬,失蹤者是張志新(化名)和其女友劉穎焕阿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體首启,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暮屡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毅桃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褒纲。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钥飞,靈堂內(nèi)的尸體忽然破棺而出莺掠,到底是詐尸還是另有隱情,我是刑警寧澤读宙,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布彻秆,位于F島的核電站,受9級(jí)特大地震影響结闸,放射性物質(zhì)發(fā)生泄漏掖棉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一膀估、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耻讽,春花似錦察纯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香伴。三九已至,卻和暖如春具则,著一層夾襖步出監(jiān)牢的瞬間即纲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工博肋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留低斋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓匪凡,卻偏偏與公主長(zhǎng)得像膊畴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子病游,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 炫耀運(yùn)行成果 每次在知乎回答完一個(gè)問題唇跨,增加的粉絲數(shù)量都是翻好幾頁也看不完的。 但其實(shí)也很想知道有沒有小 V 甚至...
    麻瓜編程閱讀 885評(píng)論 0 1
  • 作者:nnngu GitHub:https://github.com/nnngu 博客園:http://www...
    nnngu閱讀 335評(píng)論 0 0
  • 雖然放假了衬衬,可每天都過得很充實(shí)买猖。孩子早上醒了就開始完成自己的練習(xí),完成后去洗臉滋尉,吃早飯玉控。然后我們向明德書城出發(fā)...
    十月的抄手閱讀 223評(píng)論 0 1
  • 回中女郎,面無彷徨兼砖, 無暇紅妝奸远,最愛武裝, 最美麗 回中女郎讽挟! 令尊令堂懒叛,右臂左膀 纏綿病床,遠(yuǎn)離側(cè)旁 最不孝回中...
    我是驕陽似火閱讀 350評(píng)論 5 4
  • 小隱隱于野耽梅,大隱隱于市薛窥。 聶隱,如一個(gè)隱身人般透明的存在眼姐,她也想過出人頭地诅迷,她也想過脫穎而出,怎奈想众旗,一直這樣隱于...
    一枝茱萸閱讀 583評(píng)論 0 0