Scrapy框架中运用selenium的经验

阿里云2000元红包!本站用户参与享受九折优惠!

相对于selenium,PhantomJs的无界面浏览器占用内存较小,在爬取数据的时候无需自动开启界面,但是可以通过设置来实现selenium的我界面抓取,具体操作:

from selenium import webdriver
# 创建chrome参数对象
opt = webdriver.ChromeOptions()
# 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.set_headless()
# 创建chrome无界面对象
driver = webdriver.Chrome(options=opt)
# 访问百度
driver.get('https://baidu.com/')
#打印内容
print(driver.page_source)
同时这里的ChromeOptions()也可以设置代理来应对反爬,具体操作
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()
# 设置代理
chromeOptions.add_argument("--proxy-server=http://202.20.16.82:10152")
# 一定要注意,=两边不能有空格,不能是这样--proxy-server = http://202.20.16.82:10152
browser = webdriver.Chrome(chrome_options = chromeOptions)
# 查看本机ip,查看代理是否起作用
browser.get("http://httpbin.org/ip")
print(browser.page_source)
# 退出,清除浏览器缓存
browser.quit()

注意:这里的代理的数量,我目前只用了一个效率较高的代理,因为selenium爬虫采用的是浏览器渲染技术,本身速度就很慢。如果选择的代理IP速度较慢,就会大大增加爬取的时间。所以使用代理前需要慎重,你要知道你使用的代理是不是访问的速度快。

  1. selenium抓取时应对滚动加载类的界面时如何抓取?

方法一: 通过selenium模拟浏览器,然后设置浏览器高度足够长,然后延时使之能够将页面的内容都能够加载出来

from selenium import webdriver
driver = webdriver.Firefox()
driver.set_window_size(1000,30000)
driver.get(url)
time.sleep(5)

方法二: 通过模拟浏览器去执行js去拉动滑滚条

from selenium import webdriver
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("window.scrollBy(0,3000)")
time.sleep(1)
driver.execute_script("window.scrollBy(0,5000)")
time.sleep(1)

注意:这种方法你得根据加载的内容去判定下拉的位置和次数,否则会只能获取到部分内容(建议使用方法一)

三种等待方式 https://blog.csdn.net/cyjs1988/article/details/76033180

https://www.jianshu.com/p/3e7fbfdec811

Python量化投资网携手4326手游为资深游戏玩家推荐:《城市大乱斗下载

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论