♥ 该回答参考ChatGPT,由吾为汝整理提供,如若有用,还请题主采纳!♥
在 Python 中,缩进错误通常是由于代码块的缩进不一致或不正确引起的。根据你提供的代码,可能存在以下几种情况导致 IndentationError:
混合使用空格和制表符:确保你的代码中只使用空格或只使用制表符进行缩进。Python 对缩进非常敏感,混合使用会导致错误。
缩进级别不一致:确保所有代码块的缩进级别一致。例如,所有在 try、except、for 和 while 语句下的代码都应该有相同的缩进。
行末空格:有时行末的空格也会导致问题,确保没有多余的空格。
下面是你提供的代码,经过格式化和检查后,确保缩进一致性:
def scrape_pinterest_data():
posts = []
MAX_POSTS = 1000 # 设置最大爬取条数
try:
# 模拟滚动页面以加载更多内容
while len(posts) < MAX_POSTS:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2) # 每次滚动后等待页面加载
# 查找所有帖子元素
post_elements = driver.find_elements(By.CSS_SELECTOR, "div[data-test-id='pin']")
# 提取帖子信息
for post in post_elements:
if len(posts) >= MAX_POSTS:
break # 达到最大限制,停止爬取
try:
# 提取文案内容
description = post.find_element(By.CSS_SELECTOR, "h3").text if post.find_elements(By.CSS_SELECTOR, "h3") else "N/A"
# 提取标签
hashtags = [tag.text for tag in post.find_elements(By.CSS_SELECTOR, "a[href*='/search/pins/?q=']")]
# 提取点赞数
likes = post.find_element(By.CSS_SELECTOR, "div[data-test-id='like']").text if post.find_elements(By.CSS_SELECTOR, "div[data-test-id='like']") else "0"
# 提取评论数
comments = post.find_element(By.CSS_SELECTOR, "div[data-test-id='comment']").text if post.find_elements(By.CSS_SELECTOR, "div[data-test-id='comment']") else "0"
# 提取用户名
username = post.find_element(By.CSS_SELECTOR, "a[href*='/@']").get_attribute("href").split('/')[-1]
# 将数据添加到字典中
post_data = {
"Description": description,
"Hashtags": hashtags,
"Likes": likes,
"Comments": comments,
"Username": username
}
posts.append(post_data)
except Exception as e:
print("Error in extracting post data:", e)
continue
except Exception as e:
print("Error in scrolling or fetching posts:", e)
finally:
driver.quit() # 关闭 WebDriver
return posts
请检查你的代码,确保缩进一致。如果你使用的是 VS Code,可以在设置中选择使用空格或制表符,并确保在整个文件中保持一致。你可以使用 View -> Command Palette,然后输入 Convert Indentation to Spaces 或 Convert Indentation to Tabs 来统一缩进。希望这能帮助你解决问题!