相信遇到过这样的情况,用selenium进行爬虫,每次都是重新打开一个谷歌浏览器。然而有些网页的爬取内容是需要用户登录状态在的,这样每次重新打开都会丢失状态,如果频繁登录是很麻烦的事。
目录
解决办法
所以请基于以下思路解决:
打开需要爬虫的网站,然后登陆好。
爬虫程序直接基于现有登录状态接管浏览器。
进行爬取。
很显然,最核心的问题就是接管当前浏览器。解决方法步骤:
①找到你谷歌浏览器所在的文件位置:
以上图我的电脑为例,点击后即可轻松找到文件位置;
②打开该路径下的cmd
这样输入并敲回车键即可打开如下:
可以看到,直接就跳进这个路径了,不需要什么cd切换路径,很方便!
接下来在这个cmd页面里面复制粘贴下面的命令(没有电脑间的差别,直接粘贴):
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"
然后回车,自动运行,自动打开谷歌浏览器页面!这个就是即将被代码接管的谷歌浏览器。
上图就是效果(有些地方不要误会,我故意把cmd和浏览器放一块方便大家对照的)
美丽修行案例
案例说明:
美丽修行网站是用于对化妆品进行检索的网站,数据来源于药监局。
但是它的检索功能是要登录后才可以使用的,哪怕我拿检索页面的网址直接去打开,也只是下图的页面:
必须要登录!下面是登录好的页面(就是用我之前那个方法打开的谷歌浏览器,然后你当正常的浏览器登录等操作即可),一会爬虫代码就是接管这个页面的。
下面是爬虫代码需要注意的部分:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import sys
#一些需要的库
chrome_options=Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
#上一行是不是有很熟悉的东西?
#没错,cmd里面的remote-debugging-port=9222命令就是指定了该端口
driver = webdriver.Chrome("C:/Users/Scripts/chromedriver.exe",chrome_options=chrome_options)
#这个地方的双引号里面的内容是你chromedriver.exe的位置,如果你没有配置,照理说是还轮不到看到这一步的文章的。
#总的来说,这一步就是对chromedriver进行配置。
#下面就应该是爬虫代码了,注意千万不要有:
#driver.close()
#或者driver.quit()
#会关掉你的浏览器的!