python爬取疫情信息html.xpath p标签_【Python爬虫】第十五次 xpath过滤标签提取url

【Python爬虫】第十五次 xpath过滤标签提取url# 一、xpath过滤标签练习

# 学完视频将阳光电影网首页导航栏前9个菜单url抓取,输出结果为可以正常访问的url, 并过滤掉"经典影片"的菜单url

#

# 二、循环内请求解析

# 对第一题解析出来的url进行请求,解析出每个菜单的分页总数,每个菜单的id,并构造出全部的菜单分页请求url,全部存进一个url_list变量,url_list变量为列表

# 比如:

# 最新电影菜单下共有165个分页,构造出165个url 存进url_list

# 国内影片菜单下共有93个页面,构造出93个url 存进url_list

#整个网站的层次: main_menu => page => item => source

import requests

from lxml import etree

def get_html(url):

headers=''

req=requests.get(url)

# print(type(req))

ret=req.status_code

if ret!=200 :

print('获取主菜单失败,返回错误:'+str(ret))

return ({})

req.encoding='gb2312'

html=req.text

return(html)

def get_main_menus(url):

html=get_html(url)

# print(html)

selector=etree.HTML(html)

main_menus=selector.xpath('//div[@class="contain"]/ul/li[position()<=9]/a')

main_menus_dict={}

for main_menu in main_menus :

text=main_menu.xpath('text()')[0]

if text=='经典电影': pass

if len(text)>=1 :

href = url + main_menu.xpath('@href')[0]

# print(text,href)

main_menus_dict.update({text:href})

else:

pass

return(main_menus_dict)

def get_items(main_menus_dict):

url_list=[]

# main_menus_dict={}

for menu_name in main_menus_dict.keys() :

menu_url=main_menus_dict.get(menu_name)

html_one_menu = get_html(menu_url)

# print(html_one_menu)

selector_one_menu=etree.HTML(html_one_menu)

# // *[ @ id = "header"] / div / div[3] / div[3] / div[2] / div[2] / div[2] / div / select / option[2]

pages=selector_one_menu.xpath('//select/option[starts-with(@value,"list")]')

print(menu_name,'小计'+str(len(pages))+'页:')

if len(pages)>=1 :

for page in pages :

page_url=menu_url.split('index.html')[0] + page.xpath('@value')[0]

print(page_url)

url_list.append(page_url)

return(url_list)

if __name__ == '__main__' :

url = 'http://www.ygdy8.com'

main_menu_dict=get_main_menus(url)

# print(main_menu_dict)

print('-------------第1题完成-----------------')

url_list=[] #全部电影页面的列表

url_list=get_items(main_menu_dict)

print('共计'+str(len(url_list))+'页')

print('-------------第2题完成-----------------')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值