配置pip文件

Windows下pip 配置文件的位置
%HOME%/pip/pip.ini

linux下安装pip,以Debian Linux为例
su -
apt-get install python-pip

linux下pip的配置文件是$HOME/.pip/pip.conf

验证安装源是否修改成功
su -
python -m pip install -upgrade pip

pip文件内容

[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple
#index-url = https://pypi.hustunique.com/simple
#index-url = https://pypi.douban.com/simple

selenium模拟浏览器操作

Windows安装
pip install selenium

Linux安装
apt-get install selenium

查看selenium支持的浏览器
from selenium import webdriver
help(webdriver)

无头浏览器phantomJs
直接将其exe文件复制到python的安装目录中。

将webdriver帮助文档输出到文件

from selenium import webdriver
import sys
browser = webdriver.PhantomJS()
out = sys.stdout
sys.stdout = open('browserHelp.txt','w')
help(browser)
sys.stdout.close()
sys.stdout = out
browser.quit()
exit()

示例:百度搜索
# 打开网站主页面
from selenium import webdriver
browser = webdriver.PhantomJS()
browser.get("https://www.baidu.com")
# 智能等待,最长等待10秒
browser.implicitly_wait(10)

# 获取搜索结果,定位有效数据的位置或表单框架
find_element(self,by='id',value=None) # 取第一个符合条件的值
find_elements(self,by='id',value=None) # 取所有符合条件的值
这两个函数可以替代下面所有函数,如find_element(by='id',value='abc') == find_element_by_id("abc")

find_element_by_class_name(self,name)
find_element_by_css_selector(self,css_selector)
find_element_by_id(self,id)
find_element_by_link_text(self,link_text)
find_element_by_name(self,name)
find_element_by_partial_link_text(self,link_text)
find_element_by_tag_name(self,name)
find_element_by_xpath(self,xpath)

# 查找文本框
textElement = browser.find_element_by_class_name("s_ipt")
textElement = browser.find_element_by_id("kw")

textElement.clear()
textElement.send_keys("python selenium")

# 查找提交按扭
submitElement = browser.find_element_by_class_name("btn self-btn bg s_btn")
submitElement = browser.find_element_by_id("su")
submitElement.click()
print browser.title

# 定位有效数据
resultElements = browser.find_elements_by_class_name("c-tools")
len(resultElements)

# 一般来说定位结果用by_xpath或by_css比较方便
# 从位置中获取有效数据
element.text
element.get_attribute(name)

value = resultElements[0].get_attribute("data-tools")
valueDic = eval(value)

print valueDic.get("title").decode("utf8")
print valueDic.get("url")

selenium&PhantomJS笔记的更多相关文章

  1. selenium + phantomjs 爬取落网音乐

    题记: 作为一个业余程序猿,最大的爱好就是电影和音乐了,听音乐当然要来点有档次的.落网的音乐的逼格有点高,一听听了10年.学习python一久了,于是想用python技术把落网的音乐爬下来随便听. 目 ...

  2. 使用selenium+phantomJS实现网页爬取

    有些网站反爬虫技术设计的非常好,很难采用WebClient等技术进行网页信息爬取,这时可以考虑采用selenium+phantomJS模拟浏览器(其实是真实的浏览器)的方式进行信息爬取.之前一直使用的 ...

  3. Selenium + PhantomJS + python 简单实现爬虫的功能

    Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...

  4. 数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置

     数据抓取的艺术(一):Selenium+Phantomjs数据抓取环境配置 2013-05-15 15:08:14 分类: Python/Ruby     数据抓取是一门艺术,和其他软件不同,世界上 ...

  5. 动态网页爬取例子(WebCollector+selenium+phantomjs)

    目标:动态网页爬取 说明:这里的动态网页指几种可能:1)需要用户交互,如常见的登录操作:2)网页通过JS / AJAX动态生成,如一个html里有<div id="test" ...

  6. python+selenium自动化软件测试(第6章):selenium phantomjs页面解析使用

    我们都知道Selenium是一个Web的自动化测试工具,可以在多平台下操作多种浏览器进行各种动作,比如运行浏览器,访问页面,点击按钮,提交表单,浏览器窗口调整,鼠标右键和拖放动作,下拉框和对话框处理等 ...

  7. 学习用java基于webMagic+selenium+phantomjs实现爬虫Demo爬取淘宝搜索页面

    由于业务需要,老大要我研究一下爬虫. 团队的技术栈以java为主,并且我的主语言是Java,研究时间不到一周.基于以上原因固放弃python,选择java为语言来进行开发.等之后有时间再尝试pytho ...

  8. 利用Selenium+PhantomJS 实现截图

    using OpenQA.Selenium; using OpenQA.Selenium.PhantomJS; using System; using System.Drawing; using Sy ...

  9. python selenium+phantomjs alert()弹窗报错

    问题:用selenium+phantomjs 模拟登陆,网页用JavaScript的alert("登陆成功")弹出框,但是用switch_to_alert().accept()报错 ...

随机推荐

  1. Python -- 网络编程 -- 认识Python3的urllib库

    Python3的urllib包含5个模块 urllib error parse request response robotparser 各个模块的主要成员: error ['ContentTooSh ...

  2. 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式

    1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ...

  3. filebeat output redis 报错 i/o timeout

    filebeat output  redis 报错 i/o timeout 先把报错内容贴出来. ERROR redis/client. go: Failed to RPUSH to redis li ...

  4. Spring Boot 不使用默认的 parent,改用自己的项目的 parent

    在初学spring boot时,官方示例中,都是让我们继承一个spring的 spring-boot-starter-parent 这个parent: <parent> <group ...

  5. UIKit 框架之UITextView

    // // ViewController.m // UItextView // // Created by City--Online on 15/5/22. // Copyright (c) 2015 ...

  6. SQL Server中使用表值函数

    函数有很多限制,不能使用动态语句,不能使用临时表等等...细看一下,直接写语句就行了,不用动态语句 insert into @re select id,parid,@I from videoclass ...

  7. mysql 中 max_allowed_packet 查询和修改

    mysql 会根据配置文件限制 server 接收的数据包的大小. 有时候大的插入和更新会被 max_allowed_packet 参数限制,报如下错误: Packet > ). You can ...

  8. Android DiskLruCache完全解析,硬盘缓存的最佳方案

    Android DiskLruCache完全解析,硬盘缓存的最佳方案 概述   记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Andro ...

  9. Q:链表的中间元素

    问题:如何得到一个链表的中间元素?   相信,这个问题对于刚入门编程的人来说,都不会难,最自然而然的想法是先遍历一遍链表,统计链表中的元素的个数,之后,再走一遍链表,所走的步长为链表长度的一半.这样就 ...

  10. HDU3533(KB2-D)

    Escape Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...