记一次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. 这不会又是一个Go的BUG吧?

    hello,大家好呀,我是小楼. 最近我又双叒叕写了个BUG,一个线上服务死锁了,不过幸亏是个新服务,没有什么大影响. 出问题的是Go的读写锁,如果你是写Java的,不必划走,更要看看本文,本文的重点 ...

  2. Windows-安装OpenVINO

    安装指导书链接: https://docs.openvinotoolkit.org/latest/openvino_docs_install_guides_installing_openvino_wi ...

  3. 跟着Vam一起学习Typescript(第一期)

    一.安装环境与配置1.命令行安装 npm i -g typescript 2.快捷打开Vs Code编辑器 创建一个项目文件夹,在该文件夹下打开命令行工具,使用code .命令快速打开编辑器(如果计算 ...

  4. 手把手教你实现一个Vue无限级联树形表格(增删改)

    前言平时我们可能在做项目时,会遇到一个业务逻辑.实现一个无限级联树形表格,什么叫做无限级联树形表格呢?就是下图所展示的内容,有一个祖元素,然后下面可能有很多子孙元素,你可以实现添加.编辑.删除这样几个 ...

  5. 想看,但电脑没网怎么办,python教你保存整本成TXT~

    各位大佬好鸭!又是我小熊猫啦咱这次直接上代码 开始之前先解释下: 模块: requests >>> pip install requestsparsel >>> p ...

  6. 用python制作文件搜索工具,深挖电脑里的【学习大全】

    咳咳~懂得都懂啊 点击此处找管理员小姐姐领取正经资料~ 开发环境 解释器: Python 3.8.8 | Anaconda, Inc. 编辑器: pycharm 专业版 先演示效果 开始代码,先导入模 ...

  7. manjaro 安装后的基本配置

    第一步:设置官方镜像源 sudo pacman-mirrors -i -c China -m rank # 输入以上命令后会有弹出框,选择一个国内镜像(推荐 https://mirrors.ustc. ...

  8. 【docker专栏5】详解docker镜像管理命令

    一.国内Docker镜像仓库 由于大家都知道的原因,从国外的docker 仓库中pull镜像的下载速度实际上是很慢的.国内的一些一线厂商以及docker官方都在国内免费提供了一些docker镜像仓库, ...

  9. nexus org.sonatype.nexus.bootstrap.jetty.JettyServer - Start failed

    INFO [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - Runningjvm 1 | 2020-04- ...

  10. APISpace 未来7天生活指数API接口 免费好用

    随着经济的发展,我们的生活水平在不断的提高,生活指数在我们的生活中也越来越受到关注,根据当天的生活指数,我们就可以知道在今天我们可以干什么比较好.   未来7天生活指数API,支持国内3400+个城市 ...