gpt4 book ai didi

javascript - 使用 selenium 递归迭代多个网页并进行抓取

转载 作者:行者123 更新时间:2023-11-30 23:25:41 25 4
gpt4 key购买 nike

这是我关于抓取网页的查询的后续问题。

我之前的问题:Pin down exact content location in html for web scraping urllib2 Beautiful Soup

这个问题是关于做同样的事情,但问题是在多个页面/ View 上递归地做同样的事情。

这是我的代码

from selenium.webdriver.firefox import web driver

driver = webdriver.WebDriver()
driver.get('http://www.walmart.com/ip/29701960?page=seeAllReviews')

for review in driver.find_elements_by_class_name('BVRRReviewDisplayStyle3Main'):

title = review.find_element_by_class_name('BVRRReviewTitle').text
rating =review.find_element_by_xpath('.//div[@class="BVRRRatingNormalImage"]//img').get_attribute('title')
print title, rating

从 URL 来看,如果我们导航到第二页,您会发现没有看到任何变化,否则就不会出现问题。在这种情况下,下一页点击器会从服务器调用 JavaScript。有没有办法我们仍然可以通过对我提供的代码进行一些轻微的修改来使用 python 中的 selenium 来抓取这个?如果有的话请告诉我。

谢谢。

最佳答案

阅读完每一页后,只需单击下一步即可:

from selenium.webdriver.firefox import webdriver

driver = webdriver.WebDriver()
driver.get('http://www.walmart.com/ip/29701960?page=seeAllReviews')

while True:
for review in driver.find_elements_by_class_name('BVRRReviewDisplayStyle3Main'):
title = review.find_element_by_class_name('BVRRReviewTitle').text
rating = review.find_element_by_xpath('.//div[@class="BVRRRatingNormalImage"]//img').get_attribute('title')
print title,rating
try:
driver.find_element_by_link_text('Next').click()
except:
break

driver.quit()

或者,如果您想限制正在阅读的页数:

from selenium.webdriver.firefox import webdriver

driver = webdriver.WebDriver()
driver.get('http://www.walmart.com/ip/29701960?page=seeAllReviews')

maxNumOfPages = 10; # for example
for pageId in range(2,maxNumOfPages+2):
for review in driver.find_elements_by_class_name('BVRRReviewDisplayStyle3Main'):
title = review.find_element_by_class_name('BVRRReviewTitle').text
rating = review.find_element_by_xpath('.//div[@class="BVRRRatingNormalImage"]//img').get_attribute('title')
print title,rating
try:
driver.find_element_by_link_text(str(pageId)).click()
except:
break

driver.quit()

关于javascript - 使用 selenium 递归迭代多个网页并进行抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22882947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com