jjyjjy_ 2024-11-12 15:34 采纳率: 0%
浏览 4

python unex indent一直报错

vs code一直在报缩进的错误,可是我没发现错在哪,请帮我解决

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

img

  • 写回答

2条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-11-12 16:03
    关注

    该回答参考ChatGPT,由吾为汝整理提供如若有用,还请题主采纳!

    在 Python 中,缩进错误通常是由于代码块的缩进不一致或不正确引起的。根据你提供的代码,可能存在以下几种情况导致 IndentationError

    1. 混合使用空格和制表符:确保你的代码中只使用空格或只使用制表符进行缩进。Python 对缩进非常敏感,混合使用会导致错误。

    2. 缩进级别不一致:确保所有代码块的缩进级别一致。例如,所有在 tryexceptforwhile 语句下的代码都应该有相同的缩进。

    3. 行末空格:有时行末的空格也会导致问题,确保没有多余的空格。

    下面是你提供的代码,经过格式化和检查后,确保缩进一致性:

    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 SpacesConvert Indentation to Tabs 来统一缩进。希望这能帮助你解决问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 11月12日