LOGIN
php - Can you please help me see the regular rules for a crawler to capture the data it needs?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:16:30
0
2
544

A. 待抓取的页面的html

$str2 = << 
⑧北京汉奥汽配有限公司

⑧北京汉奥汽配有限公司

主营: 大众 新速腾 新迈腾 新桑塔纳 新捷达 CC 新帕萨特 新宝来 收事故车及残值(郭京汉)

地址: 城环城B-01号

EOT;

B. 我写的抓取正则:

$reg_list = "/\s*\s*\s*\s*\s*\s*\s*\s*\s*<\/a>\s*<\/td>\s*<\/tr>\s*<\/table>\s*<\/td>\s*\s*\s*

\s*[\x7f-\xff]+<\/a>\s*<\/p>\s*\s*主营:<\/span>\s*([\x7f-\xff ]+_-\.)<\/span>\s*<\/p>\s*\s*地址:<\/span>\s*([\x7f-\xff -_\.]+)<\/span>\s*<\/p>\s*<\/td>\s*<\/td>\s*<\/tr>\s*<\/table>\s*<\/p>/";

编辑器中显示(截图):

之所以写成这么复杂是因为我要获取一下部分内容:

关键点来了,那么复杂,根本无法调试正则让他正确的抓取到我要的内容,请问各位大牛是如何写这样复杂的正则,然后调试,直到能够抓取到自己想要的数据的??

过去多啦不再A梦
过去多啦不再A梦

reply all (2)
黄舟

It’s time to use the symfony/dom-crawler method again. DOM Dafa is good, if you retreat from the rules, you will stay safe

composer.json

{ "require": { "symfony/css-selector": "^3.2", "symfony/dom-crawler": "^3.2" } }

a.php

 
⑧北京汉奥汽配有限公司

⑧北京汉奥汽配有限公司

主营: 大众 新速腾 新迈腾 新桑塔纳 新捷达 CC 新帕萨特 新宝来 收事故车及残值(郭京汉)

地址: 城环城B-01号

EOT; $dom = new Crawler(); $dom->addHtmlContent($str2, 'UTF-8'); $imgSrc = $dom->filter('td.imgp')->filter('img')->attr('src'); $productName = $dom->filter('td.propList')->filter('p.productName>a')->text(); $productProp6 = $dom->filter('td.propList')->filter('p.productProp6>.propValue')->text(); $productProp4 = $dom->filter('td.propList')->filter('p.productProp4>.propValue')->text(); var_dump($imgSrc); echo '
'; var_dump($productName); echo '
'; var_dump($productProp6); echo '
'; var_dump($productProp4); echo '
';

Output

    巴扎黑

    DOM is naturally a better choice, but it’s not necessarily impossible to do it with regular methods.

    /alt=\'(?P[^\']+)\'(?:.+?)?src=\'(?P[^\']+)\'(?:.+?)?主营:(?:.+?)?\'>(?P[^<]+)(?:.+?)?地址:(?:.+?)?\'>(?P
    [^<]+)/s
      Latest Downloads
      More>
      Web Effects
      Website Source Code
      Website Materials
      Front End Template
      About us Disclaimer Sitemap
      php.cn:Public welfare online PHP training,Help PHP learners grow quickly!