Python3.7+selenium捕获网页内容
0x01 平台
Windows64位家庭版使用pycharm(version2020.2)编译环境Python3.7编写。成功捕获一个网页的日志部分。
0x02 简介
selenium是一种自动化测试的技术,可以直接在浏览器中打开网站,审查网站等,可以模拟用户的操作。
运用selenium可以测试我们创作的Web项目能否更好的在不同的浏览器中运行,也可以用来爬取一个网页的信息。
0x03 实验
目标
通过selenium捕获“”的log信息,并保存在info.json文件中
准备
下载安装Selenium模块: 在Python项目控制台输入命令:pip install Selenium
下载安装谷歌浏览器驱动,我们使用国内的镜像源。您可以在"http://npm.taobao.org/mirrors/chromedriver/"上面下载您的谷歌浏览器对应版本的Chromedriver。我使用的浏览器是Chromium,版本"88.0.4307.0 ",Chromedriver使用最新的版本:
注意
仅仅下载了浏览器驱动是完全不够的,我们需要将它放置在chromium的文件夹中,另外再拷贝一份放置在您的Python文件夹内,我用的是Python3.7的环境。
请注意,如果您未执行上述步骤,在编译文件过程中可能会报错,因为编译器找不到浏览器驱动,它无法开启浏览器进行下一步的内容。
当然,也可以用这种方法设置您的web driver的环境变量:
chromedriver = "\您的Chromedriver路径\"
driver = webdriver.Chrome(chromedriver)
编码
包含的库文件:
如果提示您未安装某个依赖库,您可以使用命令"pip install <#您需要的库文件名>"来安装。
请注意这里的13行是我的chromium浏览器的目录,浏览器可执行程序在这个目录下面,我们需要在代码中声明chrome.exe的路径,否则可能会报错,Error Msg :
Desired capabilities类提供一组键值对key-value,我们通过它指定运行环境是谷歌浏览器,您可以根据您的需要修改如火狐、safari…
输出抓取的info.json文件
#设置启动项,
设置要抓取的网页
driver = webdriver.Chrome(desired_capabilities=capabilities, options=chrome_options)
driver.get('https://www.baidu.com')
#打印抓取的信息
info=[]
for capW_ in driver.get_log('browser'):
info.append(capW_)
pprint.pprint(capW_)
j = json.dumps(info, indent = 4,ensure_ascii=False)
with codecs.open('info.json','w','utf-8') as file:
file.write(j)
driver.close()
如果您需要加载一些浏览器扩展,您可以尝试在代码中加入以下内容
chrome_options.add_extension("\你的扩展程序路径\扩展程序.crx")
扩展
捕获了百度的日志,我们使用selenium还可以对网页元素进行定位,您可以试着了解以下方法。
定位单个匹配元素的方法:
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
定位多个匹配元素的方法:
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
参考文献
https://www.cnblogs.com/justaman/p/11503805.html
https://www.cnblogs.com/yoyoketang/p/6789537.html
https://blog.csdn.net/u012995964/article/details/84973774