记一次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小项目出现的问题与解决办法的更多相关文章

  1. C#项目间循环引用的解决办法,有图有真相

    C#项目间循环引用的解决办法,有图有真相 程序间的互相调用接口,c#禁止互相引用,海宏软件,20160315 /// c#禁止互相引用,如果项目[订单]中有一个orderEdit单元,要在项目[进销存 ...

  2. Python打包成exe,文件太大问题解决办法

    Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...

  3. 学习笔记之Python人机交互小项目一:名字管理系统

    2020是一个不平凡的一年,但即使挫折不断,我们每学期的课程实训也没有受到影响,仍旧如期实施.与往年不同的是,今年的实训老师是学校邀请的公司在职人员来给我们实训.今年实训的内容是Python语言,下面 ...

  4. 学习笔记之Python人机交互小项目二:名片管理系统

    继上次利用列表相关知识做了简单的人机交互的小项目名字管理系统后,当学习到字典时,老师又让我们结合列表和字典的知识,结合一起做一个名片管理系统,这里分享给在学习Python的伙伴! 1.不使用函数 1 ...

  5. 【转】【selenium+Python WebDriver】之元素定位不到解决办法

    感谢: 煜妃的<Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)> ClassName定位报错问题:<[Python] ...

  6. python+selenium自动化测试,浏览器最大化报错解决方法

    此处以谷歌浏览器为例 [问题1]缺少chrome驱动,webdriver调用谷歌浏览器的时候就报错了,如下图: [原因分析]缺少谷歌驱动程序 [解决办法] 1.查看本地安装chrome浏览器版本 2. ...

  7. vs2017下发现解决python运行出现‘No module named "XXX""的解决办法

    对于使用vs2017开发python程序无疑发现,在解决方案资源管理器中设置把两个xxx.py,yyy.py文件都设置为启动文件,然后分别在vs2017这个IDE下运行这个两个文件在项目工程中运行,发 ...

  8. Python编程的10个经典错误及解决办法

    接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Python3十大经典错误及 ...

  9. eclipse导入web项目之后项目中出现小红叉解决办法

    项目中有小红叉我遇到的最常见的情况: 1.项目代码本身有问题.(这个就不说了,解决错误就OK) 2.项目中的jar包丢失.(有时候eclipse打开时会出现jar包丢失的情况,关闭eclipse重新打 ...

随机推荐

  1. 【Redis】事件驱动框架源码分析

    aeEventLoop初始化 在server.c文件的initServer函数中,对aeEventLoop进行了初始化: 调用aeCreateEventLoop函数创建aeEventLoop结构体,对 ...

  2. 在VMware Workstation 16上安装Windows7虚拟机以及VMware tools安装失败解决方法

    安装VMware Workstation 16 搜素"VMware Workstation下载" 下载 VMware Workstation Pro 下载Windows7系统镜像 ...

  3. Linux yum的实现和配置

    使用yum或dnf解决rpm包的依赖关系. YUM:Yellowdog Update Modifier.是rpm的前端程序 作用:解决软件包之间的依赖关系 yum工作原理: yum 服务器存放rpm包 ...

  4. Linux文本管理命令

    touch命令: 创建空文件:touch newfile 也可以使用重定向符(>)创建空文件: > newfile 刷新文件时间: touch 已经存在的文件 cp命令:文件的复制 选项: ...

  5. 周报?谁还写周报啊?不都用Python小工具: 发个周报邮件给老板就行还写周报啊?不都用Python小工具: 发个周报邮件给老板就行

    缘起: 新跳槽到一家公司, 没想到第一个挑战居然是每周都要发周报. 告诉老板这周都干了些什么和下周准备干什么. 我记性不好, 常常忘事儿.所以很多时候周报都会忘记发送. 于是, 就决定写一个小工具好了 ...

  6. NC13328 倒水

    NC13328 倒水 题目 题目描述 有一个大水缸,里面水的温度为 \(T\) 单位,体积为 \(C\) 升.另有 \(n\) 杯水(假设每个杯子的容量是无限的),每杯水的温度为 \(t[i]\) 单 ...

  7. 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操

    目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...

  8. 论文阅读 A Data-Driven Graph Generative Model for Temporal Interaction Networks

    13 A Data-Driven Graph Generative Model for Temporal Interaction Networks link:https://scholar.googl ...

  9. Solution -「二项式定理与组合恒等式」一些练习

    Task 1 \(\mathcal{Prob:}\) \((3x - 2y)^{18}\) 的展开式中, \(x^5y^{13}\) 的系数是什么?\(x^8y^9\) 的系数是什么? \(\math ...

  10. GIS技术在医疗行业的应用:利用切片地图发布技术解决dmetrix数字病理切片在线浏览

    最近一直在研究切片地图发布技术,解决各种矢量和栅格数据的切片地图制作和发布问题.这块的技术在土地评估和调查类公司中应用较多,因为他们经常需要使用各地地图,传统的文件管理方式很难适应工作现状,如果将各种 ...