爬虫第5篇-chrome headless 初试

无头浏览器

无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。
浏览器内核

早期的无头浏览器多使用phantomjs,用作自动化测试和数据采集。
随着爬虫的欣欣向荣(愈演愈烈),反爬虫的思路逐步清晰起来,复杂的js渲染。

遇到复杂的js 爬虫工程师一般两种思路,分析js,
抽丝剥茧的筛选自己需要的接口
使用js 渲染引擎
无头浏览器便是js 渲染引擎的终极
我拿真是的浏览器来采集你的网站,你还能怎么办。

最初的phantomjs 并不稳定,效率低下
无奈大家选择带有界面的Chrome
后期 Chrome 支持无头模式

selenium 直接弃用了phantomjs

Chrome 无头模式初试

采集网站:http://www.lvmama.com/lvyou/youji/d-xinxilan3597.html

网站分析: 网站文章列表使用ajax 异步加载
ajax 请求参数复杂,比较难模拟
当然静下心来可以。

鉴于网站数据极少,不值得分析接口,选择渲染页面

代码

from selenium import webdriver
import time

option = webdriver.ChromeOptions()
option.add_argument('headless')
option.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=option)
#driver = webdriver.Chrome()
#driver = webdriver.PhantomJS()
driver.get('http://www.lvmama.com/lvyou/youji/d-xinxilan3597.html')
print('打开浏览器')
driver.maximize_window()
print(driver.title)

driver.set_window_size(1024,1024)#设定固定大小
for num in range(3,10):
    time.sleep(2)
    driver.find_element_by_xpath("//*[@class='wy_state_page']/p[1]/a["+str(num)+"]").click()
    time.sleep(1)

    driver.get_screenshot_as_file("E:\\data\\webmagic\\lvmama\\" + str(num) + "maxheadless.png");
    print("Page"+str(num))
    urls = driver.find_elements_by_xpath("//*[@class='countryBox']//dl//dt//a")
    for url in urls:
        print(url.get_attribute("href"))


print('关闭')
driver.quit()
print('测试完成')
  • 使用了Xpath 解析网页
  • 使用了driver 解析出a 标签

注意:

  • 脚本根目录放置一个Chromewebdriver
  • 适当设置等待时间,保证网页渲染完成
  • Chrome 版本和webDriver 版本对应

猜你喜欢

转载自blog.csdn.net/keep_learn/article/details/84308497