selenium动态爬取猫眼前top100

学了一段时间的selenium了,写一点小的心得

  • 开始是用的request写的爬虫,后来有的网站不能直接通过request get到网站源码,有的是有加密处理的。然后就开始了学习selenium的道路了,selenium自动化工具,可以自动的打开网站(也叫模拟人打开网页的动作)通过代码控制你想打开的网站,然后就可以通过这个打开的网页动态爬取你想要的信息了,即可见即可爬。

接下来是一点点笔记:

  1. selenium用到的是selenium中webdriver

        from selenium import webdriver
    
  2. webdriver提供了浏览器的启动接口

      webdriver.Firefox()
    
  3. 多窗口切换 这里的多窗口是指的,多个窗口,不是一个窗口多次进入不同的网址。
    通过browser.window_handles方法得到窗口的句柄,通过browser.switch_to.window()来切换窗口。

      browser.execute_script('window.open("http://www.baidu.com")') 
    

    打开一个新的百度窗口

  4. current_url    获取当前页面的url;
    page_source   获取当前页面的源码;
    title        获取当前页面的title;

最后就是爬取猫眼电影的前top100:

from selenium import webdriver
import re
import time

def get_html():
    browser = webdriver.Firefox()
    browser.get('https://maoyan.com/board/4?offset=0')
    html = browser.page_source
    items = get_item(html)
    for item in items:
        print(item)
    time.sleep(2)

    for offset in range(2, 11):
        button = browser.find_element_by_class_name('page_' + str(offset))
        button.click()  # 点击搜索按钮进行搜索
        html = browser.page_source
        items = get_item(html)
        for item in items:
            print(item)
        time.sleep(2)

def get_item(html):
    pattern = re.compile('
.*?board-index.*?>(.*?)<.*?name.*?a.*?>(.*?)<.*?主演:(.*?)<.*?时间:(.*?)<.*?', re.S) items = re.findall(pattern, html) return items if __name__ == '__main__': get_html()

我是用re搜索匹配的,还没用到xpath匹配,xpath更方便点。之后会更新xpath匹配的。
由于也在学的阶段,有的部分是看书上的(崔庆才的python3网络爬虫开发实战)。

你可能感兴趣的:(selenium动态爬取猫眼前top100)