我是Python和Regex的新手,我有点困惑。我想在网页标题中搜索三个不同的术语,如果标题与我想要打印的标题相匹配(我使用scrapy,那么它会为每个项目打印)。我不确定如何通过这三个术语进行搜索?例如,如果标题有" Dresses | Wallets | Pumps"打印出来。
目前我只是打印出标题中的第一个字词
c_raw = response.xpath('//title').extract()
c_re = re.search('<title>(.*?) |.*?', c_raw[0])
c = c_re.group(1).lower()
我试过
c_raw = response.xpath('//title').extract()
c_re = re.search('Dresses|Wallets|Pumps', c_raw[0])
c = c_re.group(0)
但是有些人打印了无。我还不确定c_raw[0]
正在做什么? 0怎么办?
任何帮助将不胜感激!
编辑:虽然以下答案有所帮助 - 在Dresses | Wallets | Pumps周围添加括号
答案 0 :(得分:2)
这是一个正则表达式,可以找到localStorage.vals = JSON.stringify(item);
中哪些(如果有)标题关键字:
c_raw
regex = re.compile("(?:Dresses)|(?:Wallets)|(?:Pumps)")
print regex.findall(c_raw)
等格式,只是意味着它们一起出现的顺序匹配括号内的字母,但不将它们保存为正则表达式组。
至于(?:Dresses)
正在做什么,基本上c_raw[0]
是一个字符串。在python中,您可以将字符串视为字符数组。所以,c_raw
说,给我数组c_raw[0]
的第0个索引 - 即得到c_raw
的第一个字符
答案 1 :(得分:1)
从scrapy shell尝试这个演示,
In [1]: text = "<title>Testing test Pumps abc asdf a</title>"
In [2]: sel = Selector(text=text)
In [3]: sel.xpath('//title').re('Dresses|Wallets|Pumps')
Out[3]: [u'Pumps']
我已经向选择器对象输入了html,因为您还没有提供任何特定的start-url