python 遍历html,Python 通过lxml遍历html xpath
#coding:utf-8'''Created on 2017年10月9日@author: li.liu'''from selenium import webdriverfrom lxml import etreeimport urllibimport urllib2import time#url='http://www.woyihome.com'url='http://sso.woyihome.
#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中都可以调用 模版调用
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)