selenium
的介绍二、关于根据百度百科介绍:
Selenium
是一个用于Web
应用程序测试的工具,在现在的爬虫领域中可以直接模拟浏览器请求web
服务器,使用场景:AJAX
加载的页面,现代前端框架react、vue、angular
开发的项目,你查看源代码根本看不到东西的那种情况下。
selenium
的下载与安装1、安装
pip install selenium
2、还需要ChromeDriver
才能驱动Chrome浏览器完成相应的 *** 作。
在window
下的配置
在
windows
下,建议直接将chromedriver.exe
文件拖到Python
的Scripts
目录下,或者工作空间下
在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爬虫过程中的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)