self.driver = webdriver.Chrome(executable_path="./chromedriver.exe",chrome_options=webdriver.ChromeOptions())
company_name = self.driver.find_element_by_name("q")
company_name.send_keys("STANLEY BRIDGE CYCLES AND SPORTS LIMITED ")
time.sleep(2)
self.driver.find_element_by_name("btnK").click()
time.sleep(2)
self.driver.find_elements_by_link_text("View all Google reviews")[0].click()
time.sleep(2)
即使使用上面的代码向下滚动页面,我仍然只得到10个评论。不过我没有得到任何错误。
需要帮助如何向下滚动页面,以获得至少20个评论。到目前为止,我只能得到10个评论。根据我对此问题的在线搜索,人们大多使用:“driver.execute_script(”window.scrollto(0,document.body.scrollheight);“)”若要随时向下滚动页面,请执行以下操作。但对我来说这不起作用。我检查了页面前后的高度(“driver.execute_script(”window.scrollto(0,document.body.scrollheight);“))是一样的。
使用Javascript滚动到最后一次审查,这将触发额外的审查负载。
last_review = self.driver.find_element_by_css_selector('div.gws-localreviews__google-review:last-of-type')
self.driver.execute_script('arguments[0].scrollIntoView(true);', last_review)
编辑:
下面的例子对我来说在Firefox和Chrome上是正确的,你可以根据你的需要重用提取谷歌评论功能
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
def extract_google_reviews(driver, query):
driver.get('https://www.google.com/?hl=en')
driver.find_element_by_name('q').send_keys(query)
WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.NAME, 'btnK'))).click()
reviews_header = driver.find_element_by_css_selector('div.kp-header')
reviews_link = reviews_header.find_element_by_partial_link_text('Google reviews')
number_of_reviews = int(reviews_link.text.split()[0])
reviews_link.click()
all_reviews = WebDriverWait(driver, 3).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.gws-localreviews__google-review')))
while len(all_reviews) < number_of_reviews:
driver.execute_script('arguments[0].scrollIntoView(true);', all_reviews[-1])
WebDriverWait(driver, 5, 0.25).until_not(EC.presence_of_element_located((By.CSS_SELECTOR, 'div[class$="activityIndicator"]')))
all_reviews = driver.find_elements_by_css_selector('div.gws-localreviews__google-review')
reviews = []
for review in all_reviews:
try:
full_text_element = review.find_element_by_css_selector('span.review-full-text')
except NoSuchElementException:
full_text_element = review.find_element_by_css_selector('span[class^="r-"]')
reviews.append(full_text_element.get_attribute('textContent'))
return reviews
if __name__ == '__main__':
try:
driver = webdriver.Firefox()
reviews = extract_google_reviews(driver, 'STANLEY BRIDGE CYCLES AND SPORTS LIMITED')
finally:
driver.quit()
print(reviews)
我正试图从这个链接中抓取评论: https://www.google.com/search?q=google回顾第二次机会治疗40街 对于我使用以下代码加载页面的内容 页面加载很好,它没有向下滚动,我已经对其他网站(如 linkedn)使用了相同的代码,并且它在那里工作。
问题内容: 尝试使用selenium-webdriver python向下滚动到页面底部,以便加载更多产品。 该网页已加载,但没有变化。 我想念什么吗? 问题答案: 您可以尝试以下move_up和move_down函数:
作为一个项目的一部分,我正试图从谷歌那里获取完整的评论(在其他网站上的之前尝试中,我的评论被一个截断,除非你点击它,否则它会隐藏完整的评论)。 我已经为此选择了rvest软件包。然而,我似乎没有得到我想要的结果。 这是我的步骤 然而,这似乎不起作用。我这里没有任何输出。 我对这个软件包和网页抓取非常陌生,所以对此的任何意见都将不胜感激。
X1.2新增 sp_get_comments($tag,$where); 功能: 获取评论; 参数: $tag:查询标签,默认:field:*;limit:0,5;order:createtime desc; $where:查询where数组,按照thinkphp where array格式; 返回: 数组,评论
请求header GET /v1/activity/{频道id}/comments/{页码} Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请将"{频道id}"替换您需要获取的频道id `请将"{页码}"替换为要获取的页码数值,值为0将返回第一页数据,每页20条 数据为根据发送时间倒序排序,
请求header GET /v1/activity/{频道id}/comments/count Authorization:Bearer {ACCESS TOKEN} 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 请将"{频道id}"替换您需要获取的频道id 返回 { "count": 100 } 返回参数说明 参数 描述 类型 备注 count 数目