学了一段时间的selenium了,写一点小的心得
- 开始是用的request写的爬虫,后来有的网站不能直接通过request get到网站源码,有的是有加密处理的。然后就开始了学习selenium的道路了,selenium自动化工具,可以自动的打开网站(也叫模拟人打开网页的动作)通过代码控制你想打开的网站,然后就可以通过这个打开的网页动态爬取你想要的信息了,即可见即可爬。
接下来是一点点笔记:
-
selenium用到的是selenium中webdriver
from selenium import webdriver
-
webdriver提供了浏览器的启动接口
webdriver.Firefox()
-
多窗口切换 这里的多窗口是指的,多个窗口,不是一个窗口多次进入不同的网址。
通过browser.window_handles方法得到窗口的句柄,通过browser.switch_to.window()来切换窗口。browser.execute_script('window.open("http://www.baidu.com")')
打开一个新的百度窗口
-
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('<dd>.*?board-index.*?>(.*?)<.*?name.*?a.*?>(.*?)<.*?主演:(.*?)<.*?时间:(.*?)<.*?', re.S)
items = re.findall(pattern, html)
return items
if __name__ == '__main__':
get_html()
我是用re搜索匹配的,还没用到xpath匹配,xpath更方便点。之后会更新xpath匹配的。
由于也在学的阶段,有的部分是看书上的(崔庆才的python3网络爬虫开发实战)。