当前位置:首页 / Python爬虫之Chrome无头浏览器 正文

0

Python爬虫之Chrome无头浏览器

it技术 | 我学学发表于2020-04-19 | 个浏览
随着越来越多的web数据都是经过js处理的,对于爬虫来说就有这很大的难度,一般情我们使用selenium+phantomjs来去解析执行js,但是自2017  4月份后selenium不再维护phantojs接口,所以我么需要找一个替换的方式,好在chrome以及Firefox也提供了无界面操作方式。

Headless Browser是没有图形用户界面(GUI)的web浏览器,通常是通过编程或命令行界面来控制的。

Headless Browser可用于自动化可用性测试或测试浏览器交互。另外,如果内容是动态呈现的(比如通过Javascript),web抓取等传统的面向web的任务就很难做 

使用方法1:

from selenium import webdriver
 
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
 
my_driver = webdriver.Chrome(executable_path='./chromedriver',chrome_options = options)
driver.get("https://www.baidu.com")
 使用方法2:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options)
driver.get("https://www.baidu.com")
 【注】在使用selenium前请自行下载chromedriver驱动。
 

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
 
# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 驱动路径
path = r'C:\Users\ZBLi\Desktop\1801\day05\ziliao\chromedriver.exe'
 
# 创建浏览器对象
browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)  # 参数添加
 
# 上网
url = 'http://www.baidu.com/'
browser.get(url)
time.sleep(3)
 
browser.save_screenshot('baidu.png')  # 捕获(截屏)保存
 
browser.quit()

三、项目实战(配置谷歌无头浏览器,爬取豆瓣电影)

复制代码
from selenium importwebdriverfrom time importsleepimporttimeif __name__ == '__main__':
url
= 'https://movie.douban.com/typerank?type_name=%E6%81%90%E6%80%96&type=20&interval_id=100:90&action=' #发起请求前,可以让url表示的页面动态加载出更多的数据 path = r'C:\Users\Administrator\Desktop\爬虫授课\day05\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe' #创建无界面的浏览器对象 bro =webdriver.PhantomJS(path)#发起url请求 bro.get(url)
time.sleep(
3)#截图 bro.save_screenshot('1.png')#执行js代码(让滚动条向下偏移n个像素(作用:动态加载了更多的电影信息)) js = 'window.scrollTo(0,document.body.scrollHeight)'bro.execute_script(js)#该函数可以执行一组字符串形式的js代码 time.sleep(2)

bro.execute_script(js)
#该函数可以执行一组字符串形式的js代码 time.sleep(2)
bro.save_screenshot(
'2.png')
time.sleep(
2)#使用爬虫程序爬去当前url中的内容 html_source = bro.page_source #该属性可以获取当前浏览器的当前页的源码(html) with open('./source.html', 'w', encoding='utf-8') as fp:
fp.write(html_source)
bro.quit()
复制代码




猜你喜欢

暂无评论:

评论已关闭

最近发表
最新评论