首页 > 其他分享 >爬取behance搜索结果图片背后详情页的链接

爬取behance搜索结果图片背后详情页的链接

时间:2023-10-04 16:12:46浏览次数:29  
标签:current keyword 详情页 stop links 爬取 behance 链接

目的:我需要搜索多个behance结果,如“washing machine","refrigerator"等,把结果下详情页高清大图都下载到本地。这样我就获得了“冰箱”的大量高清图。
程序作用:爬取多个搜索结果下的详情页链接,并新建文件后保存在桌面txt文件中,如“washing machine.txt”中。后期把txt中的文本可以放进“豆皮文件下载器”中下载。
程序概述:
  1. 导入必要的库:

    • webdriver:控制浏览器的操作。
    • By:用于定位页面元素。
    • time:用于添加延迟,保证页面加载完毕。
    • threading:用于并发操作,实现同时监听用户输入和爬取内容。
  2. 全局变量:

    • stop_current_keyword:用于标志是否需要停止当前关键词的爬取操作。
  3. 函数:

    • input_thread:一个后台线程,不断监听用户输入。当用户输入'stop'时,将全局变量stop_current_keyword设为True。
    • get_behance_links:核心爬虫函数。给定一个 URL 和目标链接数量,它会返回一个链接列表。
  4. 主程序:

    • 定义了一个关键词列表 keywords。该列表包含了需要在 Behance 上搜索的关键词。
    • 提示用户输入希望爬取的链接数量。
    • 启动一个后台线程,该线程用于监听用户输入。
    • 启动 Chrome 浏览器。
    • 对于 keywords 列表中的每一个关键词,生成对应的 Behance 搜索 URL,并使用上述的 get_behance_links 函数获取链接。
    • 获取到链接后,将它们保存到一个以关键词命名的文本文件中。
    • 最后,关闭 Chrome 浏览器


# 导入必要的库
from selenium import webdriver # 用于控制浏览器
from selenium.webdriver.common.by import By # 用于定位元素
import time # 用于添加延迟
import threading # 用于并发操作

stop_current_keyword = False # 用于控制是否停止当前关键词的爬取


# 一个后台线程,监听用户输入
def input_thread():
global stop_current_keyword
while True:
cmd = input("Type 'stop' to skip current keyword: ")
if cmd == 'stop':
stop_current_keyword = True


# 这个函数用于爬取Behance网站上的链接
def get_behance_links(driver, url, target_count):
links = set()
driver.get(url)
time.sleep(5) # 等待页面加载

try:
# 当链接数量未达到目标数量,并且用户未停止当前关键词的爬取时
while len(links) < target_count and not stop_current_keyword:
# 查找页面上的所有链接元素
a_elements = driver.find_elements(By.CSS_SELECTOR,
".ProjectCoverNeue-coverLink-U39.e2e-ProjectCoverNeue-link")
for a in a_elements:
href = a.get_attribute("href")
if href:
links.add(href)

# 如果链接数量还未达到目标,并且用户还未输入'stop',则滚动页面以加载更多链接
if len(links) < target_count:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5) # 等待页面加载新的内容
except Exception as e:
print(f"Error: {e}")

return list(links)


if __name__ == "__main__":
keywords = [
"washing machine",
"refrigerator",
# ... 更多关键词 ...
]

target_links_count = int(input("请输入您想要爬取的链接数量:"))

# 开启监听用户输入的线程
thread = threading.Thread(target=input_thread)
thread.start()

driver = webdriver.Chrome() # 启动Chrome浏览器

try:
for keyword in keywords:
stop_current_keyword = False # 对于每一个关键词,都将标志位重置
search_url = f"https://www.behance.net/search/projects?search={keyword}&field=industrial+design"
links = get_behance_links(driver, search_url, target_links_count)

filename = f"{keyword}.txt"
with open(filename, 'w', encoding='utf-8') as f:
for link in links:
f.write(link + '\n')

print(f"已找到 {len(links)} 个链接并保存到 '{filename}'.")

if stop_current_keyword:
print(f"Skipped the rest of '{keyword}' on user command.")
finally:
driver.quit() # 关闭浏览器

标签:current,keyword,详情页,stop,links,爬取,behance,链接
From: https://www.cnblogs.com/zly324/p/17742379.html

相关文章

  • 使用Springboot实现点击名称跳转到详情页面
    终于解决出来啦!!!嘎嘎嘎嘎~~~只需要在td标签里面嵌套上a标签就能实现啦!这里主要看一下功能,页面直接使用的白板~html页面的具体代码如下(将超链接标签a的样式进行了美化):<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>主界面</title></head>......
  • Python爬虫源码,Behance 作品图片及内容 selenium 采集爬虫
    前面有分享过requests采集Behance作品信息的爬虫,这篇带来另一个版本供参考,使用的是无头浏览器selenium采集,主要的不同方式是使用selenium驱动浏览器获取到页面源码,后面获取信息的话与前篇一致。Python爬虫源码,Behance作品图片及内容采集爬虫附工具脚本!理论上,几乎所有的页面内......
  • 批量爬取多分页多张图片
    importurllib.requestfromlxmlimportetree#https://sc.chinaz.com/tupian/siwameinvtupian.htmlurl='https://sc.chinaz.com/tupian/siwameinvtupian_2.html'defgetTenGirlPhote(page):headers={'User-Agent':'Mozil......
  • 爬取豆瓣电影,保存到json文件中
    importurllib.requesturl='https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537......
  • 爬虫记录~(多线程爬取图片)
    使用Requests+Re库方法多线程爬取亚马逊商城商品图片,以关键词“书包”搜索页面的商品的图片,爬取0-2页面商品图片。关键词:多线程爬虫程序、商城网站的遍历,链接的查找和访问。巩固搜索接口和翻页处理。importrequestsfromfake_useragentimportUserAgentimportrefrommulti......
  • python爬取手机壁纸
    无聊随便玩玩,要爬成功还早着呢,代码很乱可以整理,写了就记录一下吧,有机会再改。importrequestsimportosfrombs4importBeautifulSoupfromrequests.packagesimporturllib3importrandomimportthreadingimporttimeurllib3.disable_warnings()start_page=1end_......
  • Python爬虫-爬取百度搜索结果页的网页标题及其真实网址
    共两个依赖的需提前安装的第三方库:requests和bs4库cmd命令行输入安装requests库:pip3install-ihttps://pypi.douban.com/simplerequests安装bs4库:pip3install-ihttps://pypi.douban.com/simplebeautifulsoup4 本微项目源文件下载地址:https://wwuw.lanzouj.com/i1Au51......
  • 这是一个很有趣的爬虫代码,可以爬取指定地区的91论坛帖子,你会得到一个yp信息集锦 So c
    varNightmare=require('nightmare');//https://duckduckgo.comfunctionopen(page){varnightmare=Nightmare({show:false});//console.log(`开始爬取=https://t0904.91zuixindizhi.com/forumdisplay.php?fid=19&page=${page}`);nigh......
  • 【Python爬虫】批量爬取豆瓣电影排行Top250
    ​    今天给大家分享下我刚开始接触Python时学习的爬虫程序,代码部分很简单,不过当时刚开始学习时还是走了不少弯路的。这个爬虫程序应该是很多书里面的入门练手程序,主要就是去豆瓣爬取电影评分排行前250。        本篇文章只做学习交流使用,不涉及任何商业用途......
  • 指定请求头部爬取知乎网
    1、获取知乎网的url2、检查后台--获取header信息3、获取json数据4、输出数据......