闲来无事,试着写了一个爬虫来爬取pexels上的图片内容。遇到一些问题记录一下主要问题。文件得到403,想办法隐藏webdriver的身份,绕一圈足够反爬selenium,页面上收不到想要的链接(准确的说可以说是小图的链接可以收藏,但是小图分辨率不够),研究图片规则,发现每张图片都有自己的id,获取图片id,自己拼接url,下载拼接的url,我不不知道怎么提高分辨率,但是pexels提供了默认的下载方式,就是下载链接,可以用这个链接下载图片,需要注意这个链接会重定向到新的图片url,所以你不能用下载链接直接下载,只能用重定向链接下载内容源码'DOWNLOAD_URL_KEY='https://www.pexels.com/photo/{image_id}/download/'headers={'User-Agent':'Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/92.0.4515.107Safari/537.36'}DOWNLOAD_LENGTH=50#设置图片下载数量,这是页面元素的最小数量,实际下载数量大于这个数字SCROLL_HEIGHT=2000#滚动像素SLEEP_SECONDS=5#休眠秒数CPU_COUNT=os.cpu_count()logging.basicConfig(filename='log.txt',level=logging.INFO,filemode='w+',format='%(levelname)s:%(asctime)s:%(message)s',datefmt='%Y-%d-%m%H:%M:%S')IMAGE_PATH='./images/'EXISTED_IMAGES=set(os.listdir(IMAGE_PATH))defget_image_ids():"""通过selenium获取网站中的图片id"""browser=webdriver.Chrome(executable_path='./chromedriver')#隐藏window.navigator.webdriver避免反爬处理#这篇文章找答案太浪费了https://juejin.cn/post/6844904095749242887感谢作者browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source":"""Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"""})url=PEXELS_URLbrowser.get(url)browser.maximize_window()elements=browser.find_elements_by_xpath('//article')scroll_height=SCROLL_HEIGHTwhilelen(elements)
