如何抓取 Google People Also Ask with Selenium 和 Python 的问答,获取数量超过 Google 默认输出的数量?

问题描述 投票:0回答:2

我找到了一个很好的解决方案,但它适用于Google默认给出的问题和答案的数量,但例如我需要更多。

我是一名 Python 开发新手。 我如何获得更多问题和答案? 我是否必须先实现点击公开所需金额然后再解析?

python selenium parsing
2个回答
0
投票

以下代码解析屏幕上出现的问题,然后询问您是否要解析更多问题。如果您输入

y
,则会单击最后一个问题的按钮,以便在页面中加载更多问题。问题存储在列表中
questions
,答案存储在列表中
answers

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

your_path = '...'
driver = webdriver.Chrome(service=Service(your_path))

driver.get('https://www.google.com/search?q=How%20to%20make%20bakery%3F&source=hp&ei=j0aZYYjRAvja2roPrcWcyAU&iflsig=ALs-wAMAAAAAYZlUn4NMUPjfIpQmrXSmjIDnaWjJXWIJ&ved=0ahUKEwjI1JDn0Kf0AhV4rVYBHa0iB1kQ4dUDCAc&uact=5&oq=How%20to%20make%20bakery%3F&gs_lcp=Cgdnd3Mtd2l6EAMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBMyBAgAEBNQAFgAYJMDaABwAHgAgAF-iAF-kgEDMC4xmAEAoAECoAEB&sclient=gws-wiz')

questions, answers = [], []
while 1:
    for idx,question in enumerate(driver.find_elements(By.CSS_SELECTOR, "div[id*='RELATED_QUESTION']")):
        if idx >= len(questions): # skip already parsed questions
            questions.append(question.text)
            txt = ''
            for answer in question.find_elements(By.CSS_SELECTOR, "div[id*='WEB_ANSWERS_RESULT']"):
                txt += answer.get_attribute('innerText')
            answers.append(txt)
    inp = input(f'{idx+1} questions parsed, continue? (y/n)')
    if inp == 'y':
        question.click()
        time.sleep(2)
    else:
        break

-1
投票

您可以使用 PeopleAlsoAsk.ai ,这是一个专门为从 Google 的“People Also Ask”(PAA)部分提取和抓取问题和答案而设计的工具。该工具可以处理所有复杂问题,例如加载更多问题,并确保您获得超出 Google 默认输出的更大数据集。借助 PeopleAlsoAsk.ai,您可以避免手动实现点击以揭示更多问题的麻烦,只需以结构化格式获取所需的数据即可。

这将节省您的时间并简化新手开发人员的项目流程。

© www.soinside.com 2019 - 2024. All rights reserved.