花瓣网爬虫

1. 实现的需求:

  • 用户提供一系列关键词。
  • 使用selenium自动化工具,打开浏览器,然后在huaban.com上搜索这些关键词。
  • 滚动页面以获取更多的结果。
  • 获取并保存与关键词相关的链接。
  • 将这些链接保存到指定的目录下的.txt文件中。

2. 代码的功能:

  • search_and_save_links: 用于在huaban.com上搜索指定关键词,并保存链接。
  • main: 代码的主入口,获取用户输入的关键词和保存路径,然后调用search_and_save_links函数。

3. 用了什么大致的语法实现需求:

  • 模块导入:使用了selenium(一个流行的Web自动化库)以及os和time标准库。
  • 字符串格式化:使用BASE_URL.format(keyword=keyword)来将关键词插入到URL中。
  • Selenium方法:
    • driver.get(): 打开一个指定的URL。
    • driver.find_elements(): 根据XPath查找页面中的元素。
    • driver.execute_script(): 执行JavaScript代码。
  • 文件操作:使用with open()来创建和写入文件。
  • 异常处理:try-except用于捕获和处理过程中可能出现的错误。

4. 使用时的格式和注意事项:

  • 使用格式:
    1. 执行此代码。
    2. 当提示时,输入用逗号分隔的关键词。
    3. 输入保存链接的地址。
  • 注意事项:
    1. 为了运行这段代码,您需要安装selenium库以及合适版本的WebDriver(例如ChromeDriver)。
    2. 页面结构或类名可能会随着时间而改变。如果huaban.com更改了其页面结构或样式,代码可能需要进行相应的调整。
    3. 滚动等待时间(time.sleep(5))可以根据需要调整。过短的等待时间可能导致某些链接未被抓取,而过长的等待时间则可能导致程序运行缓慢。
    4. 为了避免被认为是机器人或恶意活动,不要频繁或大量地运行这个程序。





from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import os

BASE_URL = "https://huaban.com/search?q={keyword}&sort=all&type=board&category=industrial_design"

def search_and_save_links(driver, keyword, save_dir):
driver.get(BASE_URL.format(keyword=keyword))

fetched_links = set()
prev_num_links = -1

# 滚动页面直到没有新的链接为止
while len(fetched_links) > prev_num_links:
prev_num_links = len(fetched_links)

# 获取所有符合条件的链接
elements = driver.find_elements(By.XPATH, '//a[contains(@class, "UwLo0Up5") and starts-with(@href, "/boards/")]')
for ele in elements:
link = ele.get_attribute('href')
fetched_links.add(link)

# 滚动
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5) # 增加等待时间

# 保存链接到txt文件
with open(os.path.join(save_dir, f"{keyword}.txt"), "w", encoding="utf-8") as file:
for link in fetched_links:
file.write(link + "\n")

def main():
# 获取关键词、保存地址
keywords = input("请输入搜索关键词,用','隔开:").split(",")
save_dir = input("请输入保存地址,例如:C:\\Users\\皮皮\\Desktop:")

if not os.path.exists(save_dir):
os.makedirs(save_dir)

# 统一浏览器初始化
driver = webdriver.Chrome()

for keyword in keywords:
keyword = keyword.strip()
try:
search_and_save_links(driver, keyword, save_dir)
except Exception as e:
print(f"Error occurred while fetching links for keyword {keyword}: {e}")

driver.quit()

if __name__ == "__main__":
main()
posted @   不上火星不改名  阅读(176)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示