xpath中匹配text()中是否含有制定内容的方法

如下图是我需要获取下载地址的链接,

xpath中匹配text()中是否含有制定内容的方法_第1张图片

使用scrapy的response来截取的代码如下:

r = response.xpath('//a[contains(text(), ".mkv")]/@href').extract()

或者可以使用如下方法来获取

response.xpath(u'//a[starts-with(text(),"第")]/@href').extract()

特别需要注意的是要注意编码,如果字符串中有非系统编码,请使用unicode的字符串格式u""

付上我写的脚本,用来直接解析出所有下载链接的脚本

#!/usr/bin/python

#encoding=utf-8


#下载页面内容

import requests

#解析HTML内容

from lxml import etree

import os, sys


def parse_link(url):

    res = requests.get(url)

    if not res.ok:

        return False, "下载网页失败:{}".format(url)


    html = etree.HTML(res.content)

    movie_links = html.xpath('//a[contains(text(), ".mkv")]/@href')

    ret_links = []

    for i in movie_links:

        if i.startswith('ed2k'):

            ret_links.append(i)


    return True, ret_links



if __name__ == '__main__':

    if len(sys.argv) != 2:

        print('下载格式 脚本文件 下载网页地址')

        sys.exit(0)


    ok, r = parse_link(sys.argv[1])

    if not ok:

        print('下载失败,错误信息:{}'.format(r))

        sys.exit(1)


    for i in r:

        print i



你可能感兴趣的:(xpath中匹配text()中是否含有制定内容的方法)