zoukankan      html  css  js  c++  java
  • lmxl的xpath提取脚本之间的title以及url

      运用lmxl的xpath提取脚本之间的title以及url:

    import urllib.request
    import lxml
    import lxml.etree
    import re
    def  makeurllist(url):
        headers={"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);"}
        request = urllib.request.Request(url, headers=headers)  # 请求,修改,模拟http.
        data = urllib.request.urlopen(request).read()  # 打开请求,抓取数据
        mytree = lxml.etree.HTML(data)
        mylist=mytree.xpath("//*[@class="dxypage clearfix"]//text()")
        lastmystr=mylist[0]
        restr="页次:1/(d+) 每页"
        regex=re.compile(restr,re.IGNORECASE)
        mylastlist=regex.findall(lastmystr)
        numbers=eval(mylastlist[0])  #整数
        urllist=[]
        for i in range(1,numbers+1):
            urllist.append("https://www.jb51.net/list/list_97_"+str(i)+".htm")
    
        #print(urllist)
        return urllist
    def gettitlefromurl(url):
        lastlist=[]     #[(title,url),(title,url),(title,url),(title,url)]
        headers = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0);"}
        request = urllib.request.Request(url, headers=headers)  # 请求,修改,模拟http.
        data = urllib.request.urlopen(request).read()  # 打开请求,抓取数据
        mytree = lxml.etree.HTML(data)
        urllist=mytree.xpath("//*[@class="artlist clearfix"]/dl/dt/a/@href")  #* 匹配任何元素节点    //*[@class="artlist clearfix"] 表示从当前节点下降的所有元素节点
        #print(urllist)
        titlelist = mytree.xpath("//*[@class="artlist clearfix"]/dl/dt/a/@title")
        #print(titlelist)
        for list1 in urllist:
            for list2 in titlelist:
                lastlist.append((list2,list1))
        #print(lastlist)
        return lastlist
    
    url="https://www.jb51.net/list/list_97_1.htm"
    #makeurllist("https://www.jb51.net/list/list_97_1.htm")
    #gettitlefromurl("https://www.jb51.net/list/list_97_1.htm")
    for allurl in makeurllist(url):
        gettitlefromurl(allurl)
        print(gettitlefromurl(allurl))  #返回列表元组[(title,url),(title,url),(title,url),(title,url)]
  • 相关阅读:
    Kernel parameter requirements ( Linux DB2)
    db2 backup export
    db2 活动日志激增的原因分析处理
    db2 应用的最常见状态(转)
    db2 reorg到底需要多少表空间(转)
    HDLM for AIX安装
    db lock
    db2 tablespaces table bufferpools reorgs
    AIX文件系统和存储部署(转)
    真正看网络代码
  • 原文地址:https://www.cnblogs.com/my-global/p/12454091.html
Copyright © 2011-2022 走看看