from selenium import webdriver driver=webdriver.Chrome() # 自动访问的网站 driver.get("http://www.santostang.com/2018/07/04/hello-world/") fo = open("result.txt", "a+") fo.truncate(0) for ii in range(0, 3): # i指的是每页有10小页 for i in range(0, 10): # 下滑到页面底部 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 爬取某一页的所有评论 driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere-comment']")) driver.implicitly_wait(10) # 隐性等待10秒 comment = driver.find_elements_by_css_selector('div.reply-content') print() print("第 %g 页评论:" % int(i + 1 + ii * 10)) # 打开一个文件 fo = open("result.txt", "a+") fo.write('\n') fo.write("第 %g 页评论:" % int(i + 1 + ii * 10) + '\n') # 打印所有评论 for eachcomment in comment: content = eachcomment.find_element_by_tag_name('p') print(content.text) # fo.write(content.text.encode("gbk", 'ignore').decode("gbk", "ignore")) text = content.text.encode('GBK', 'ignore').decode('GBk') fo.write(text + '\n') fo.close() # 获取所有的页码按钮 page_btn = driver.find_elements_by_class_name("page-btn") # 统计这一页总共有多少页评论,默认最多为10页 page_btn_size = len(page_btn) if i == page_btn_size - 1: driver.switch_to.default_content() driver.implicitly_wait(10) break # 按顺序点击某一页 if i != 9 and i + 1 < page_btn_size: page_btn[i + 1].click() # 把iframe又转回去,注意加上这一句 driver.switch_to.default_content() # 如果网速慢,可以适当增加隐性等待时间 driver.implicitly_wait(15) driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") driver.switch_to.frame(driver.find_element_by_css_selector("iframe[title='livere-comment']")) # 判断页面是否有下一页的按钮,没有就退出 try: next_page = driver.find_element_by_class_name("page-last-btn") next_page.click() # 把iframe又转回去,注意加上这一句 driver.switch_to.default_content() driver.implicitly_wait(10) except: print() print("爬取结束!(不是爬取内容)")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)