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

本文介绍了如何使用Scrapy和lxml库,通过XPath表达式在HTML内容中查找包含特定文本(如'.mkv'或'第')的链接。示例代码展示了如何提取和处理这些链接,特别是注意到了编码问题,建议使用Unicode字符串。脚本提供了一个功能,即从下载页面解析出所有以'ed2k'开头的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


使用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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值