htmlunit抓取动态网页(selenium模块为第三方模块需要安装的操作软件操作原理)

优采云 发布时间: 2022-02-09 14:04

  htmlunit抓取动态网页(selenium模块为第三方模块需要安装的操作软件操作原理)

  【百度云搜索,搜索各种素材:】【搜索网盘,搜索各种素材:】

  硒模块

  selenium 模块是需要安装的第三方模块。 selenium模块是一个api接口模块,操作各种浏览器对应的软件

  selenium模块是api接口模块,操作各种浏览器对应的软件,所以需要下载浏览器对应的操作软件

  工作原理是:selenium模块操作浏览器操作软件,浏览器操作软件操作浏览器

  Selenium 2.0 用于以下浏览器

  谷歌浏览器

  Internet Explorer 7、8、9、10、11

  火狐

  Safari

  歌剧

  HtmlUnit

  幻影

  安卓

  iOS

  

  Selenium的核心是用js控制浏览器

  下载相应的浏览器操作软件

  铬:

  边缘:

  火狐:

  Safari:

  我们这里使用 Firefox 作为一栏

  首先将火狐浏览器的操作软件geckodriver.exe文件放入爬虫目录

  selenium 模块可以模拟用户行为来操作各种版本的浏览器

  webdriver.Firefox('操作浏览器软件路径') 实例化Firefox浏览器对象

  get('url') 访问网站

  find_element_by_xpath('xpath expression') 通过xpath表达式找到对应的元素

  clear() 清除输入框内容

  send_keys('content')将内容写入输入框

  click()点击事件

  get_screenshot_as_file('截屏保存路径名') 将网页截图保存到该目录

  page_source 获取网页 htnl 源代码

  browser.close() 关闭浏览器

  #!/usr/bin/env python

# -*- coding:utf8 -*-

from selenium import webdriver  # 导入selenium模块来操作浏览器软件

import time

browser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe')

browser.get('https://www.tmall.com/?spm=a220o.1000855.a2226mz.1.5c90c3484bZCx6')

# 模拟用户操作

browser.find_element_by_xpath('//input[@id="mq"]').clear()                 # 通过xpath表达式找到输入框,clear()清空输入框里的内容

browser.find_element_by_xpath('//input[@id="mq"]').send_keys('连衣裙')     # 通过xpath表达式找到输入框,send_keys()将内容写入输入框

browser.find_element_by_xpath('//button[@type="submit"]').click()          # 通过xpath表达式找到搜索按钮,click()点击事件

time.sleep(3)   # 等待3秒

browser.get_screenshot_as_file('H:/py/17/img/123.jpg')  # 将网页截图,保存到此目录

neir = browser.page_source   # 获取网页内容

print(neir)

browser.close()     # 关闭浏览器

  使用 scrapy 的 Selector 方法。过滤所选数据

  Selector()方法,过滤选中的数据,参数为获取的字符串html源码

  Selenium 操作浏览器滚动条

  execute_script(js)方法,执行原生态js脚本

  #!/usr/bin/env python

# -*- coding:utf8 -*-

from selenium import webdriver  # 导入selenium模块来操作浏览器软件

import time

from scrapy.selector import Selector

browser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe')

browser.get('https://www.oschina.net/blog')

time.sleep(3)       # 等待3秒

for i in range(3):  # 滚动3次滚动条

    js = 'window.scrollTo(0,document.body.scrollHeight); var lenofpage=document.body.scrollHeight; return lenofpage'

    browser.execute_script(js)  # 执行js语言滚动滚动条

    time.sleep(3)

neir = browser.page_source   # 获取网页内容

# print(neir)

gl_neir = Selector(text=neir)

dedao = gl_neir.css('title::text').extract()

print(dedao)

# browser.close()     # 关闭浏览器

  设置请求页面不加载图片,提高请求效率

  ChromeOptions() 方法,创建谷歌浏览器设置对象

  Chrome() 方法,创建谷歌浏览器对象

  谷歌浏览器在下面列出

  #!/usr/bin/env python

# -*- coding:utf8 -*-

from selenium import webdriver  # 导入selenium模块来操作浏览器软件

from scrapy.selector import Selector

#设置请求网页不加载图片,提高请求效率

chrome_options = webdriver.ChromeOptions()                          #创建谷歌浏览器设置对象

prefs = {"profile.managed_default_content_settings.images": 2}      #设置谷歌浏览器不加载图片

chrome_options.add_experimental_option('prefs', prefs)              #将不加载图片添加到浏览器

browser = webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe', chrome_options=chrome_options)

# browser.set_page_load_timeout(40) #设置页面最长加载时间为40s

browser.get('https://www.taobao.com/')

neir = browser.page_source   # 获取网页内容

# print(neir)

gl_neir = Selector(text=neir)

dedao = gl_neir.css('title::text').extract()

print(dedao)

# browser.close()     # 关闭浏览器

  selenium 模块也可以操作 PhantomJS 浏览器。 PhantomJS是无界面浏览器,比较清爽,但是多线程会降低性能

  重要提示:我们建议使用 chromedriver.exe、谷歌浏览器

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线