闲来没事就帮运营的写了点小工具,因为组内算是用php的,就算效率不高也只能硬着头皮上了,在之前学校的大程算是有点接触过,不过应该是痛苦的回忆,一共才三个正则匹配都不知道花了多久时间,不过之前了解到有个叫phpQuery的东西,实际用的时候发现确实很给力,只是它是类似于jQuery,屌丝没学过jQuery,用起来不是很顺手,不过还是帮上很大忙了。
先说说正则吧,总的来说php的正则还算是比较不错的,但是易学不易精,一般的用法都只是用的很粗浅,本人也不例外,首先一般需要看下常用的列子,如下链接:
这里说的比较详细,不过一般也不会全都用到,要用的精巧,而配合phpQuery也让正则匹配变得很简单,
经验来说一般匹配非单行时就变得比较困难,以及一些链接a标签等,在实际使用是总会有各种限制,例如抓取淘宝网商品的名称,图片等,但是淘宝上带链接的a标签可不止这些,还有各种其他的内容,在这次写的过程中就发现了其实在适当的地方用适当的匹配方法很重要,例如可以通过字符数来进行略精确的匹配,同时首先可以用phpQuery抓取一块内容(因为不怎么会用),可以先使用它来得到如table,tbody,或者带id和class的各种标签,这样对之后的匹配就起到了很好的过滤作用,主要说的就是换行,汉字体间有空格,链接,a标签
换行:方法是匹配一到多个\s,\s表示一个空字符,如空格,tab,换行等,
汉字间空格:因为要抓的汉字一般在a标签之间,所以可以简单地用[^\n]{1,}即非换行的多个字符,看起来很不准确,不过使用时效果很不错,
链接:就我上面提到的,因为要抓的一般都是同类的链接,所以可以用长度限定,
a标签等主要是在抓取之前在网页源代码中数清空格数,
这里提醒一点在抓取网站页面数据时,查看源代码才是比较准确的,用chrome的查看元素的话,chrome会对某些不合常规的写法进行改善,所以常常会抓取不到数据,
还有对于一些前端生成的数据抓取的话可以尝试查看源代码中的javascript代码,如果幸运的话还是能找到。