php抓取网页匹配url(如何利用正则匹配从网站的页面中提取我们想要的信息)

优采云 发布时间: 2022-03-05 23:18

  php抓取网页匹配url(如何利用正则匹配从网站的页面中提取我们想要的信息)

  在web开发中,有时我们需要从其他网页的内容中提取出我们需要的信息,我们需要使用curl的方法来抓取页面信息,但是要从抓取的信息中提取出我们真正需要的内容,我们需要使用正则表达式公式进行匹配。

  在这里,我将简要说明如何使用正则匹配从网站的页面中提取我们想要的招聘信息,分为以下几个步骤:

  1、分析我们要爬取的内容网页的url构成;

  2、根据实际情况拼接我们需要的url;

  3、阅读网页内容;

  4、使用正则模式根据返回的内容匹配我们需要的内容;

  步骤 1 分析 url 组成:

  在网站的搜索职位页面,选择职位地点和职位名称进行搜索,

  

  发现它的url组成如下:

  %E7%BB%B5%E9%98%B3&kw=java&sm=0&p=1

  在:

  Ø ji参数的值是工位:这里看到的值“%E7%BB%B5%E9%98%B3”不是乱码;是中文使用urlencode的结果,我们也可以直接跟明码,比如ji=绵阳;

  Ø Kw参数的值就是位置;

  Ø p参数为页码;

  第 2 步现在我们构造我们要访问的 url:

  

  步骤 3 使用 file_get_contents 函数获取 网站 内容:

  

  现在需要使用谷歌浏览器的调试工具观察这部分的html结构,以便编写对应的正则表达式:

  

  这部分内容的html结构为:

  

  步骤 4 使用正则表达式匹配所需内容:

  首先,使用正则表达式匹配这部分的值。参考上面的html结构,构造的正则表达式(这里我们使用效率更高的PCRE模式)为:

  

  我们使用匹配函数 preg_match_all:

  

  通过以上匹配,可以将匹配到的内容放入$arr数组中,返回内容如下:

  

  继续使用正则表达式匹配我们需要的内容,但是之前构造的url中的页码值为1,我们需要匹配所有页面,所以需要修改之前的url,并且需要使用循环,但是什么样的循环结构呢?我们需要先观察页面中“下一页”按钮的html结构:

  

  

  我们可以匹配上图中a标签中的类名“nopress2”来判断是否有下一页。如果值能匹配,则表示没有下一页,所以我们使用do...while循环结构来获取所有的页面。内容,代码修改如下:

  

  当“nopress2”匹配时,while 条件不再满足,循环停止。

  1、根据下面的html结构,在对应的a标签中找到job title和url

  

  这里我们使用foreach遍历我们刚刚得到的数组$arr,并添加代码do...while:

  

  2 找到公司名称和对应的url,在foreach中继续添加代码

  

  3 匹配配置职位的月薪、工作地点、发布时间,继续添加代码

  

  经过以上处理,我们最终会得到如下形式的数组:

  

  至此,我们有了要提取的数据。

  完整代码:

  

  

  

  这个文章只提供了一个通用的方法来爬取网页上我们想要的内容。中间的一些步骤和代码还是可以优化的,但是还是有不足的地方。欢迎大家一起讨论,毕竟在编程中,没有最好的代码,只有更好的想法。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线