【Python爬虫作业】- 第14次,lxml以及xpath练习
2018-01-07 本文已影响32人
丽雁解
# 一、div标签文本提取
# 将学习视频中xpath.html文件中div标签下文本值
# “第一个div” ,“第二个div” 使用xpath结构化提取并打印输出
from lxml import etree
import requests
fp=open('xpath.html','r',encoding='utf-8')
html_content=fp.read()
fp.close()
selector=etree.HTML(html_content)
div=selector.xpath('//div/text()')
for i in range(len(div)):
aa=div[i].strip(' ').strip('\n')
if(len(aa)>0):
print(aa)
# 运行结果
# 第一个div
# 第二个div
#-----------------------------------------------
# 二、ul标签文本提取
# 将xpath.html文件中ul标签下“流程” ,“xpath学习”,“流程2”文本值
# 使用xpath结构化提取并打印输出
ul=selector.xpath('//ul/text()')
for j in range(len(ul)):
aa=ul[j].strip(' ').strip('\n')
if(len(aa)>0):
print(aa)
# 运行结果
# 流程
# xpath学习
# 流程2
# -----------------------------------------------
# 三、过滤标签
# 将xpath.html文件中的第一个div下的前3个a标签的文本及超链接
# 使用xpath结构化提取,打印输出
infos=selector.xpath('//div[1]/ul[1]/li/a')
for info in infos:
a_text=info.xpath('text()')[0]
a_href=info.xpath('@href')[0]
print(a_text,' ',a_href)
# 运行结果
# 1、最新作业贴 http://www.jianshu.com/p/f278c313f91a
# 2、Python基础编程文章 http://www.jianshu.com/c/868ce75a5ca5
# 3、作业提交流程 http://www.jianshu.com/p/72be24ca015f
# 4、作业提交网址 http://www.jianshu.com/c/c88fe7029f28
# 5、百度云链接 https://pan.baidu.com/s/1kUToeWn
# -----------------------------------------------
# 四、requests模块和lxml&xpath结合提取数据
# 结合上节课requests模块知识,将阳光电影网导航栏的文本及超链接结构化提取
url='http://www.ygdy8.com/'
headers={
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Cookie':'37cs_pidx=1; 37cs_user=37cs43285651090; 37cs_show=69; UM_distinctid=160bca539501d4-0503c2951b5a5e-57683a71-100200-160bca539517a; CNZZDATA5783118=cnzz_eid%3D55112955-1514992804-http%253A%252F%252Fwww.ygdy8.com%252F%26ntime%3D1514992804',
'Host':'www.ygdy8.com',
'If-Modified-Since':'Wed, 03 Jan 2018 12:57:50 GMT',
'If-None-Match':"0dbc7759284d31:54c",
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'
}
req=requests.get(url,headers=headers)
req.encoding='gb2312'
html=req.text
selector=etree.HTML(html)
a=selector.xpath('//div[@id="header"]/div[@class="contain"]/div[@id="menu"]/div[@class="contain"]//a')
for i in a:
a_text=i.xpath('text()')
a_href=i.xpath('@href')
if len(a_text)>0:
print(a_text[0],' ',a_href[0])
# 运行结果
# 最新影片 /html/gndy/dyzz/index.html
# 经典影片 /html/gndy/index.html
# 国内电影 /html/gndy/china/index.html
# 欧美电影 /html/gndy/oumei/index.html
# 日韩电影 /html/gndy/rihan/index.html
# 华语电视 /html/tv/hytv/index.html
# 日韩电视 /html/tv/rihantv/index.html
# 欧美电视 /html/tv/oumeitv/index.html
# 最新综艺 /html/zongyi2013/index.html
# 旧版综艺 /html/2009zongyi/index.html
# 动漫资源 /html/dongman/index.html
# 游戏下载 /html/game/index.html
# 高分经典 html/gndy/jddy/20160320/50541.html
# 设为主页 index.html