正则表达式

1.正则入门

  • 单字符

    1
    2
    3
    4
    5
    6
    7
    8
    .	除换行意外的所有字符
    [] [aoe] [a-w] 匹配集合中任意一个字符
    \d [0-9] 数字
    \D 非数字
    \w 数字、字母、下划线、中文
    \W 非\w
    \s 所有空白字符,包括空格、制表符、换页符等等,等价于 [\f\n\r\t\v]
    \S 非空白
  • 数量修饰

    1
    2
    3
    4
    5
    6
    *	任意多个
    + 至少一次
    ? 可有可无,0次或者1次
    {m} 固定m次 hello{3}
    {m,} 至少m次 hello{3,}
    {m,n} m至n次
  • 边界

    1
    2
    $	以某某结尾
    ^ 以某某开头
  • 分组

    1
    (ab)
  • 贪婪模式

    1
    .*
  • 非贪婪模式(惰性模式)

    1
    .*?
  • 其他

    1
    2
    3
    4
    5
    re.I	忽略大小写
    re.M 多行匹配
    re.S 单行匹配

    re.sub(正则表达式, 替换内容, 字符串)

2.常用正则表达式

说明 正则表达式
网址(URL) [a-zA-Z]+://[^\s]*

BS4

xpath

菜鸟教程

跳过某个序号的标签进行匹配

比如这里想跳过第一个<tr>标签,可以用到position>1。

1
XXX.xpath("//tr[position()>1]/td[1]/input/@value").extract()

XPath查找没有id或类的元素

https://qa.1r1g.com/sf/ask/168289131/

很简单:

1
//tr[not(@id) and not(@class)]

这会给你所有tr缺乏这两种元素idclass属性.如果您希望所有tr元素都缺少其中一个,请使用or而不是and:

1
//tr[not(@id) or not(@class)]

当以这种方式使用属性和元素时,如果属性或元素具有值,则将其视为是真的.如果它丢失则将其视为错误.

爬虫链接提取器中的正则注意点

1.问号?\?进行转义

2.匹配表达式前,最好加r

3