我找到了一個很好的解決方案,但它適用于谷歌默認提供的問題和答案的數量,但例如我需要更多。
我是 Python 的新手開發人員。如何獲得更多問題和答案?我是否必須先實作點擊以披露所需金額然后決議?
uj5u.com熱心網友回復:
以下代碼決議螢屏上出現的問題,然后詢問您是否要決議更多問題。如果您輸入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 to make bakery?&source=hp&ei=j0aZYYjRAvja2roPrcWcyAU&iflsig=ALs-wAMAAAAAYZlUn4NMUPjfIpQmrXSmjIDnaWjJXWIJ&ved=0ahUKEwjI1JDn0Kf0AhV4rVYBHa0iB1kQ4dUDCAc&uact=5&oq=How to make bakery?&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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484547.html
下一篇:Python從字串決議鍵=值
