xpath中匹配text()中是否含有制定内容的方法
如下图是我需要获取下载地址的链接,
使用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