selenium爬取评论

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值