关于selenium在python爬虫过程中的使用

关于selenium在python爬虫过程中的使用,第1张

概述一、关于selenium的介绍根据百度百科介绍:Selenium是一个用于Web应用程序测试的工具,在现在的爬虫领域中可以直接模拟浏览器请求web服务器,使用场景:Ajax加载的页面,现代前端框架react、vue、angular开发的项目,你查看源代码根本看不到东西的那种情况下。二、关于selenium的下 一、关于selenium的介绍

根据百度百科介绍:Selenium是一个用于Web应用程序测试的工具,在现在的爬虫领域中可以直接模拟浏览器请求web服务器,使用场景:AJAX加载的页面,现代前端框架react、vue、angular开发的项目,你查看源代码根本看不到东西的那种情况下。

二、关于selenium的下载与安装

1、安装

pip install selenium

2、还需要ChromeDriver才能驱动Chrome浏览器完成相应的 *** 作。

官网下载地址

window下的配置

windows下,建议直接将chromedriver.exe文件拖到PythonScripts目录下,或者工作空间下

mac电脑下配置

# 1.移动到文件夹下sudo mv Chromedriver /usr/bin# 2.配置环境变量export PATH="$PATH:/usr/local/Chromedriver"# 3.刷新source ~/.profile

3、在黑窗口中测试(输入Chromedriver)

三、基本的使用

1、模拟打开github网站

from selenium import webdriver# 打开浏览器browser = webdriver.Chrome()# 进去网页browser.get(url='https://github.com/login')print(browser.page_source)# 关闭# browser.quit()

2、获取元素及模拟登录github

from selenium import webdriverfrom scrapy.selector import Selectorimport time# 打开浏览器browser = webdriver.Chrome()# 进去网页browser.get(url='https://github.com/login')# 休息几秒time.sleep(20)browser.find_element_by_CSS_selector('#login_fIEld').send_keys('kuangshp@126.com')browser.find_element_by_CSS_selector('#password').send_keys('*****')browser.find_element_by_CSS_selector('input[name="commit"]').click()print(browser.page_source)browser.quit()

3、在selenium中写JavaScript的代码,(适用于滑动解锁登录的情况,写博客的时候没注意哪个网站是滑动解锁的)

...(把上面的代码复制过来)time.sleep(3)browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
四、方法一、写一个中间件将selenium集成到scrapy中抓取天猫上商品信息

1、中间件的写法

# 设置一个selenium的中间件from selenium import webdriverfrom scrapy.http import HTMLResponseimport timeclass SeleniumMIDdleware(object):    def __init__(self):        self.browser = webdriver.Chrome()        super(SeleniumMIDdleware, self).__init__()    def process_request(self, request, spIDer):        if spIDer.name == 'tianmao':            self.browser.get(request.url)            time.sleep(5)            print('你访问的网站:{0}'.format(request.url))            return HTMLResponse(url=self.browser.current_url, body=self.browser.page_source, enCoding="utf-8", request=request)

2、在spIDer获取值

# -*- Coding: utf-8 -*-import scrapyclass TianmaoSpIDer(scrapy.SpIDer):    name = 'tianmao'    allowed_domains = ['detail.tmall.com']    start_urls = [        'https://detail.tmall.com/item.htm?spm=a1z10.1-b-s.w5003-18239599942.10.7ecd6d22DnmNOX&ID=558343675882&rn=aad6d07ecc49599549f5df50943947f3&skuID=3633466738509&scene=taobao_shop']    def parse(self, response):        print('进来了-----')        print(response.CSS('#J_PromoPrice .tm-price::text').extract_first(), '当前的价格')
五、直接在spIDer中使用selenium打开浏览器,然后在中间件中使用browser.get去访问网站

1、关于spIDer的写法

# -*- Coding: utf-8 -*-import scrapyfrom selenium import webdriverfrom scrapy.xlib.pydispatch import dispatcherfrom scrapy import signalsclass TianmaoSpIDer(scrapy.SpIDer):    name = 'tianmao'    allowed_domains = ['detail.tmall.com']    start_urls = [        'https://detail.tmall.com/item.htm?spm=a1z10.1-b-s.w5003-18239599942.10.7ecd6d22DnmNOX&ID=558343675882&rn=aad6d07ecc49599549f5df50943947f3&skuID=3633466738509&scene=taobao_shop']    def __init__(self):        self.browser = webdriver.Chrome()        super(TianmaoSpIDer, self).__init__()        # 设置信号监听spIDer_closed的时候关闭浏览器        dispatcher.connect(self.spIDer_closed, signals.spIDer_closed)    def parse(self, response):        print('进来了-----')        print(response.CSS('#J_PromoPrice .tm-price::text').extract_first(), '当前的价格')    def spIDer_closed(self, spIDer):        self.browser.quit()

2、中间件的写法

# 设置一个selenium的中间件from selenium import webdriverfrom scrapy.http import HTMLResponseimport timeclass SeleniumMIDdleware(object):    def process_request(self, request, spIDer):        if spIDer.name == 'tianmao':            spIDer.browser.get(request.url)            time.sleep(5)            print('你访问的网站:{0}'.format(request.url))            return HTMLResponse(url=spIDer.browser.current_url, body=spIDer.browser.page_source, enCoding="utf-8", request=request)

3、在settings.py中配置

总结

以上是内存溢出为你收集整理的关于selenium在python爬虫过程中的使用全部内容,希望文章能够帮你解决关于selenium在python爬虫过程中的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1184806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存