【发布时间】:2021-07-02 06:18:24
【问题描述】:
所以我目前有一个函数:
def main(search_term):
# RUN MAIN PROGRAM ROUTINE
chromedriver = "chromedriver path"
driver = webdriver.Chrome(chromedriver)
records = []
url = get_url(search_term)
# SELECT NUMBER OF PAGES TO CRAWL
#
for page in range(1, 21):
#for page in itertools.count():
driver.get(url.format(page))
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all('div', {'data-component-type': 's-search-result'})
print(page)
for item in results:
record = extract_record(item)
if record:
records.append(record)
在给定“电子产品”或“化妆品”或“airpod pro case”之类的 search_term 的情况下,从搜索结果的第 1 页到第 21 页抓取数据
但是,我意识到一些搜索结果会显示第 1 页到第 3 页、第 1 页到第 7 页、第 1 页到第 20 页等页面,具体取决于我的 search_term 的具体程度。
我想如果下一个按钮被启用,我可以抓取数据,直到我的代码注意到下一个按钮被禁用,这意味着它是结果的最后一页。
启用的下一个按钮和禁用的下一个按钮的xpaths是:
next_button_enabled = driver.find_element_by_xpath('//li[@class="a-last"]')
next_button_disabled = driver.find_element_by_xpath('//li[@class="a-disabled a-last"]')
但我不确定如何使用我目前所写的内容来处理这些信息。
【问题讨论】:
-
网址是什么?如果没有网址,我们无法对此进行有意义的评论,因为这需要量身定制的答案。
标签: python python-3.x selenium web-scraping