记一次python + selenium小项目出现的问题与解决办法
记一次python + selenium小项目出现的问题与解决办法
如何接入代理
def crawl_xdaili(self):#代理 可不用 需要时 解除注释
"""
获取讯代理
:return: 代理
"""
url = '寻代理的api接口 自己去讯代理官网'
r = requests.get(url)
if r:
result = json.loads(r.text)
proxies = result.get('RESULT')
for proxy in proxies:
self.proxies = {
'http':'http://' + proxy.get('ip') + ":"+ proxy.get('port')
}
print(proxies)
options.add_argument("--proxy-server=%s"%ip)#设置IP代理
获取信息方式
尽量使用第一次找到一个大的信息所在的标签通过xpath+for循环提取信息
def info_url(self):#获取页面中的url等信息
self.driver.current_window_handle
# 先定位,查看是否加载元素
WebDriverWait(self.driver, 1000).until(
EC.presence_of_element_located(
(By.XPATH, "//tr[@onmouseout='this.className=rowClass']")))
infos = self.driver.find_elements_by_xpath("//tr[@onmouseout='this.className=rowClass']")#获取标题
some_info=[]
self.urls = []
self.titles = []
for info in infos:#选择性获取你需要的信息
title = info.find_element_by_xpath('.//a/span').get_attribute('title') #标题
url = info.find_element_by_xpath('.//a').get_attribute('href')#链接
address = info.find_element_by_xpath('./td[2]').text
ways = info.find_element_by_xpath('./td[4]').text#方式
time1 = info.find_element_by_xpath('./td[5]').text#日期
time2 = info.find_element_by_xpath('./td[6]').text
self.urls.append(url)
self.titles.append(title)
如何重新打开一个页面
js = 'window.open("{}");'.format(url)
self.driver.execute_script(js)
如何切换页面句柄
handles = self.driver.window_handles
for handle in handles:
if handle != self.driver.current_window_handle:
self.driver.switch_to.window(handle)
self.driver.close()
如何截图
self.driver.switch_to.window(handle)
window_height = self.driver.get_window_size()['height']
page_width = self.driver.execute_script('return document.documentElement.scrollWidth') # 页面宽度
page_height = self.driver.execute_script('return document.documentElement.scrollHeight') # 页面高度
self.driver.set_window_size(page_width, page_height) # 窗口大小调整
u = 'F:\\pycharm_pracise\\land\\Picture\\%s.png' % self.titles[t]#改到你自己创建的文件夹
self.driver.get_screenshot_as_file(u)
#self.driver.save_screenshot('%s.png'%self.titles[t]) # 截屏
print('已截图......第%d张'%t)
如何解决存在javascript:void的标签的查找或者点击
aElements = self.driver.find_elements_by_tag_name("a")
time.sleep(2)
names = []
for name in aElements:
if (name.get_attribute("href") is not None and "javascript:void" in name.get_attribute("href")):
names.append(name)
#点击self.driver.execute_script('arguments[0].click();',names[-2])
写代码之前构思好流畅的思路以及流程
流程:
打开页面-》输入时间-》获取一共多少页和页面中url-》解析整页的页面-》翻页
* 循环 *
* 循环 *
********************************
记一次python + selenium小项目出现的问题与解决办法的更多相关文章
- C#项目间循环引用的解决办法,有图有真相
C#项目间循环引用的解决办法,有图有真相 程序间的互相调用接口,c#禁止互相引用,海宏软件,20160315 /// c#禁止互相引用,如果项目[订单]中有一个orderEdit单元,要在项目[进销存 ...
- Python打包成exe,文件太大问题解决办法
Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...
- 学习笔记之Python人机交互小项目一:名字管理系统
2020是一个不平凡的一年,但即使挫折不断,我们每学期的课程实训也没有受到影响,仍旧如期实施.与往年不同的是,今年的实训老师是学校邀请的公司在职人员来给我们实训.今年实训的内容是Python语言,下面 ...
- 学习笔记之Python人机交互小项目二:名片管理系统
继上次利用列表相关知识做了简单的人机交互的小项目名字管理系统后,当学习到字典时,老师又让我们结合列表和字典的知识,结合一起做一个名片管理系统,这里分享给在学习Python的伙伴! 1.不使用函数 1 ...
- 【转】【selenium+Python WebDriver】之元素定位不到解决办法
感谢: 煜妃的<Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)> ClassName定位报错问题:<[Python] ...
- python+selenium自动化测试,浏览器最大化报错解决方法
此处以谷歌浏览器为例 [问题1]缺少chrome驱动,webdriver调用谷歌浏览器的时候就报错了,如下图: [原因分析]缺少谷歌驱动程序 [解决办法] 1.查看本地安装chrome浏览器版本 2. ...
- vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
对于使用vs2017开发python程序无疑发现,在解决方案资源管理器中设置把两个xxx.py,yyy.py文件都设置为启动文件,然后分别在vs2017这个IDE下运行这个两个文件在项目工程中运行,发 ...
- Python编程的10个经典错误及解决办法
接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Python3十大经典错误及 ...
- eclipse导入web项目之后项目中出现小红叉解决办法
项目中有小红叉我遇到的最常见的情况: 1.项目代码本身有问题.(这个就不说了,解决错误就OK) 2.项目中的jar包丢失.(有时候eclipse打开时会出现jar包丢失的情况,关闭eclipse重新打 ...
随机推荐
- Markdown常见基本语法
标题 -方式一:使用警号 几个警号就是几级标题,eg: # 一级标题 -方式二: 使用快捷键 ctrl+数字 几级标题就选其对应的数字, eg: ctrl+2(二级标题) 子标题 -方式一: 使用星号 ...
- 复制docker容器中的nginx某个文件到linux中
前提:docker容器中的nginx要开启
- 数据库 OLAP、OLTP是什么?相同和不同?适用场景
一.OLTP和OLAP是什么,二者比较 人类世界遵从基本的物理规律,数据世界里,关于数据的操作处理,也大体分为OLTP和OLAP两类. OLTP on-line transaction process ...
- 【转载】vscode配置C/C++环境
VScode中配置 C/C++ 环境 Tip:请在电脑端查看 @零流@火星动力猿 2022.4.12 1. 下载编辑器VScode 官网:https://code.visualstudio.com/( ...
- chrome请求cgi遇到net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
测试一个web demo的时候,通过chrome请求板子上的web server的cgi时总是提示:net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) 搜遍整个 ...
- do-while循环和三种循环的区别
循环语句3--do...while do...while循环格式 初始化表达式① do{ 循环体③ 步进表达式④ }while(布尔表达式②); 执行流程 执行顺序:①③④>②③④>②③④ ...
- java线程池开启多线程
// //maximumPoolSize设置为2 ,拒绝策略为AbortPolic策略,直接抛出异常 ThreadPoolExecutor pool = new ThreadPoolExecutor( ...
- Tomcat介绍和配置使用
目录 JavaWeb 的概念 什么是 JavaWeb? 什么是请求? 什么是响应? 请求和响应的关系 Web 资源的分类 常用的 Web 服务器 Tomcat 服务器和 Servlet 版本的对应关系 ...
- k8s的部署
一.k8s的二进制部署 1.环境准备: IP 节点 172.16.10.1 k8s-master01 172.16.10.3 ...
- 算法竞赛进阶指南0x36组合计数
概述 AcWing211. 计算系数 #include <bits/stdc++.h> using namespace std; const int mod = 10007 ; int k ...