美文网首页python爬虫入门看这个就够了Python五期爬虫作业
【python爬虫】-十五xpath过滤标签提取url

【python爬虫】-十五xpath过滤标签提取url

作者: 急躁的假汉子 | 来源:发表于2018-01-19 15:55 被阅读146次

    一、xpath过滤标签练习

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

    二、循环内请求解析

    对第一题解析出来的url进行请求,解析出每个菜单的分页总数,每个菜单的id,并构造出全部的菜单分页请求url,全部存进一个url_list变量,url_list变量为列表
    比如:
    最新电影菜单下共有165个分页,构造出165个url 存进url_list
    国内影片菜单下共有93个页面,构造出93个url 存进url_list

    import requests
    from lxml import etree
    root_url = 'http://www.ygdy8.com'
    #请求阳光电影网站
    req = requests.get(root_url)
    #输出请求的状态码
    status_code = req.status_code
    print(status_code)
    #输出网页源码
    req.encoding = 'gb2312'
    html = req.text
    selector = etree.HTML(html)
    infos = selector.xpath('//div[@class="contain"]/ul/li[position()<10]/a')
    for info in infos:
        info_text = info.xpath('text()')[0]
        if info_text == '经典影片':
            continue
        info_url = root_url + info.xpath('@href')[0]
        #将阳光电影网首页导航栏前9个菜单url抓取,输出结果为可以正常访问的url, 并过滤掉"经典影片"的菜单url
        #print(info_text,info_url)
        req1 = requests.get(info_url)
        req1.encoding = 'gb2312'
        html1 = req1.text
        selector1 = etree.HTML(html1)
        page = selector1.xpath('//div[@class="co_content8"]/div[@class="x"]//text()')[1].split('/')[0].replace('共','').replace('页','').strip()
        page = int(page)
        page_list = selector1.xpath('//div[@class="co_content8"]/div[@class="x"]//a/@href')[0].replace('2.html','')
        url_list = []
        for i in range(1,page+1):
            page_url = info_url.replace('index.html','')+page_list+str(i)+'.html'
            url_list.append(page_url)
        print(info_text,'共'+str(page)+'页',url_list)
    

    结果如图所示

    image.png

    相关文章

      网友评论

        本文标题:【python爬虫】-十五xpath过滤标签提取url

        本文链接:https://www.haomeiwen.com/subject/jqzooxtx.html