本主要分为三部分【批量获取主页信息】、【批量下载笔记图片】、【对比本地内容更新列表】。
一、【批量获取主页信息】
通过Python-selenium工具在某书的网页端抓取个人主页的所有笔记信息(aid,title,url),并存入本地。由于某书没有翻页的设置,而是一直往下刷新笔记,这次更新了鼠标滚轮功能以自动获取长网页的信息。最后通过Python-pandas工具读写本地Excel文件。
# 获取主页所有笔记的地址
import time
import os
import pandas as pd
from selenium.webdriver.edge.options import Options
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 采集作者所有作品的ID的函数
def Get_IDs(her_web):
# 访问网站
user_data_dir = r"C:\Users\yourPCname\AppData\Local\Microsoft\Edge\User Data"
options = Options()
options.add_argument(f"user-data-dir={user_data_dir}")
wb = webdriver.Edge(options=options)
# 输入网址
time.sleep(3)
wb.get(her_web)
# print('验证')
# input()
name = wb.find_element(By.CSS_SELECTOR, '#userPageContainer div.user-nickname').text
print('博主昵称:', name)
ID = wb.find_element(By.CSS_SELECTOR, '#userPageContainer span.user-redId').text
print(ID)
Name = name + '_' + ID + '.xlsx'
# 存储找到的链接
IDs_Photo = []
# 滚动页面直到不再加载新的元素
previous_height = wb.execute_script("return document.body.scrollHeight")
while True:
# 获取当前可见的元素
lis = wb.find_elements(By.CSS_SELECTOR, '#userPostedFeeds > section> div ')
# 将新找到的链接加入到列表中
for li in lis:
try:
title = li.find_element(By.CSS_SELECTOR, ' .title').text
except :
title=name
url = li.find_element(By.CSS_SELECTOR, ' a').get_attribute('href')
# 创建一个字典存放网址、aid和作品名称(后续还要加入作者和发布时间)
note_info = {'aid': url.replace('https://www.xiaohongshu.com/explore/', ''),
'title': replace_x(title),
'url': url}