CelestialCosmic / themeblog

blog articles by Celestial_Cosmic,source code by chanshiyucx
1 stars 0 forks source link

时光相册批量抓取 #47

Open CelestialCosmic opened 1 year ago

CelestialCosmic commented 1 year ago

前天早十点睡梦中被叫醒,虽然也不早了

还以为是什么大事,结果是时光相册停止运营,家里人下相片导致手机被挤爆了,那就只能献祭硬盘了

打开相册,登录完以后,才发现没有批量选择!一个个点是不可能了,写个脚本自己点吧

初步收集

先想到了用 selenium

勾选有两种:

第一种是单张的:

<a href="javascript:void(0);" data-action="toggle" data-mid="" class="select-thumbnail checked"></a>

选定后变成:

<a href="javascript:void(0);" data-action="toggle" data-mid="" class="select-thumbnail unchecked"></a>

第二种是按日期的:

<a href="javascript:void(0);" title="全选" class="action-button select-button unselected"></a>

选定后变成:

<a href="javascript:void(0);" title="全选" class="action-button select-button selected"></a>

xpath 长这个样:

//*[@id="listContent"]/div/div/div[1]/div/div[1]/div/a
//*[@id="listContent"]/div/div/div[2]/div/div[1]/div/a

那就好说了 while true 一把梭

写差不多了发现不对劲:

怎么每次都是 12 个,然后不转了?

再检查 xpath,原来如此:

//*[@id="listContent"]/div/div/div[1]/div/div[1]/div/a
//*[@id="listContent"]/div/div/div[2]/div/div[1]/div/a

又回去了

肯定是无缝加载的锅

<a href="javascript:void(0);" title="全选" class="action-button select-button unselected"></a>

那就换,按类来

再后来,又发现这样会选不完图片,于是改成了先做成数组再翻页

结果就是打死没法翻页,我一时非常无语

试了非常多种翻页方式,都不行

如下都试过了:

    body = browser.find_element_by_css_selector('body')
    browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
    browser.execute_script('window.scrollBy(0,200)')
    body.send_keys(Keys.PAGE_DOWN)
    ActionChains(browser)\
        .scroll_by_amount(0,999)\
        .perform()
    browser.execute_script('window.scrollBy(0,3500)')

那就半自动化吧

最后结果是玩了两天手机,终于把东西下完了