#coding:utf-8

'''

Created on 2017年10月9日

@author: li.liu

'''

from selenium import webdriver

from lxml import etree

import urllib

import urllib2

import time

#url='http://www.woyihome.com'

url='http://sso.woyihome.com/sso/pc-login'

#url='http://www.baidu.com'

user_agent='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36'

values = {'name' : 'WHY',

'location' : 'SDU',

'language' : 'Python' }

headers = { 'User-Agent' : user_agent }

data = urllib.urlencode(values)

req = urllib2.Request(url, data, headers)

response = urllib2.urlopen(req)

html1= response.read().encode('utf-8')

def test1():

x1={}

#html1=urllib.urlopen(url).read().decode('utf-8')

#print html1

hxml=etree.HTML(html1)

#print hxml

htree=etree.ElementTree(hxml)

#print htree

id_dite=htree.xpath('//*[@id]')

#print id_dite

coun=0

for id_items in id_dite:

#print id_items.items()

#print htree.getpath(id_items)

for id_item in id_items.items():

#print id_item

if id_item[0]=='id':

id_str='//*[@id="'+id_item[1]+'"]'

x1[id_str]=[]

#print id_str

id_path=htree.getpath(htree.xpath(id_str)[0])

#print id_path

id_str1=id_str+'//*'

idelem_list=htree.xpath(id_str1)

#print idelem_list

for e in idelem_list:

if len(e.items())==0:

pass

else:

e_path=htree.getpath(e)

#print e_path

e_path1=e_path.split(id_path)

#print e_path1[1]

if len(e_path1)>1:

e_str=id_str+e_path1[1]

e_list=e_str.split('/')

if 'li' in e_list[len(e_list)-1] or 'ul' in e_list[len(e_list)-1] or 'span' in e_list[len(e_list)-1]:

pass

else:

#print e_str

coun+=1

x1[id_str].append(e_str)

'''

for i in x1:

#print i

for i1 in x1[i]:

print i1

'''

a=0

b=0

driver=webdriver.Chrome()

driver.get(url)

#print driver.title

for i in x1:

#print i

for i1 in x1[i]:

#print i1

try:

d=driver.find_element_by_xpath(i1)

a+=1

print d.text

time.sleep(2)

driver.find_element_by_xpath(i1).click()

headx=driver.window_handles

#print headx

print '当前页面地址:\n',driver.current_url

time.sleep(1)

print i,'\n'

if len(headx)!=1:

driver.switch_to_window(headx[1])

durl= driver.current_url

print '当前页面地址:\n',durl,'\n'

if 'woyihome' in durl:

driver.close()

driver.switch_to_window(headx[0])

else:

k=1

break

elif 'localhost' in driver.current_url:

print a

except :

pass

#print b

print a

#driver.quit()

#print '===================================================='

print coun

test1()

python在lxml中使用XPath语法进行#数据解析

在lxml中使用XPath语法: 获取所有li标签: from lxml import etree html = etree.parse('hello.html') print type(html) ...

Python爬虫利器三之Xpath语法与lxml库的用法

前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

python爬虫(8)--Xpath语法与lxml库

1.XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...

Python爬虫教程-22-lxml-etree和xpath配合使用

Python爬虫教程-22-lxml-etree和xpath配合使用 lxml:python 的HTML/XML的解析器 官网文档:https://lxml.de/ 使用前,需要安装安 lxml 包 ...

lxml模块(应用xpath技术)

一.lxml介绍 第三方库lxml是第一款表现出高性能特征的python xml库,天生支持Xpath1.0.XSLT1.0.定制元素类,甚至python风格的数据绑定接口.lxml是通过Cpytho ...

python创建与遍历List二维列表

python创建与遍历List二维列表 觉得有用的话,欢迎一起讨论相互学习~Follow Me python 创建List二维列表 lists = [[] for i in range(3)] # 创 ...

【转】python 三种遍历list的方法

[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...

python 三种遍历列表里面序号和值的方法

list = ['html', 'js', 'css', 'python'] # 方法1 # 遍历列表方法1:' for i in list: print("序号:%s 值:%s" ...

Windows下Python安装lxml

1.下载easy_install的安装包,下载地址:https://pypi.Python.org/pypi/setuptools 我是Windows7,所以直接下载Windows(Simplify) ...

随机推荐

利用mysql-proxy进行mysql数据库的读写分离

实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 mysql-proxy-0 ...

thinkphp 常用

{$Think.session.adminuser}  获取session信息,模版和js中都可以调用 模版调用

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐