我正在使用 Outwit hub 为城市、州和国家(仅限美国和加拿大)抓取网站。通过该程序,我可以使用正则表达式来定义我希望抓取的文本之前和之后的标记。我还可以为所需文本定义格式。
这是一个html示例:
<td width="8%" nowrap="nowrap"></td>
<td width="22%" nowrap="nowrap"><strong>
BILLINGS, MT
USA</strong></td>
<td width="10%" align="right" nowrap="nowrap">
我已经设置了我的 reg.ex。如下:
CITY - 之前 (未格式化为正则表达式)
<td width="22%" nowrap="nowrap"><strong>
CITY - 之后 (说明州、领地和普罗旺斯)
/(,\s|\bA[BLKSZRAEP]\b|\bBC\b\bC[AOT]\b|\bD[EC]\b|\bF[LM]\b|\bG[AU]\b|\bHI\b|\bI[ADLN]\b|\bK[SY]\b|\bLA\b|\bM[ABDEHINOPST]\b|\bN[BLTSUCDEHJMVY]\b|\bO[HKNR]\b|\bP[AERW]\b|\bQC\b|\bRI\b|\bS[CDK]\b|\bT[NX]\b|\bUT\b|\bV[AIT]\b|\bW[AIVY]\b|\bYT\b|\bUSA|\bCanada)/
状态 - 之前
\<td width="22%" nowrap="nowrap"\>\<strong\>\s|,\s
状态 - 之后
/\bUSA\<\/strong\>\<\/td\>|\bCanada\<\/strong\>\<\/td\>/
状态 - 格式
/\b[A-Z][A-Z]\b/
国家 - 之前 (说明州、领地和普罗旺斯)
/(\bA[BLKSZRAEP]\b|\bBC\b\bC[AOT]\b|\bD[EC]\b|\bF[LM]\b|\bG[AU]\b|\bHI\b|\bI[ADLN]\b|\bK[SY]\b|\bLA\b|\bM[ABDEHINOPST]\b|\bN[BLTSUCDEHJMVY]\b|\bO[HKNR]\b|\bP[AERW]\b|\bQC\b|\bRI\b|\bS[CDK]\b|\bT[NX]\b|\bUT\b|\bV[AIT]\b|\bW[AIVY]\b|\bYT\b)\s/
国家 - 之后 (未格式化为正则表达式)
</strong></td><td width="10%" align="right" nowrap="nowrap">
当没有列出城市或州时,就会出现问题。我试图解释这一点,但只是让情况变得更糟。有什么办法可以清理它并仍然考虑丢失信息的可能性?谢谢你。
没有城市的例子:
<td width="8%" nowrap="nowrap"></td>
<td width="22%" nowrap="nowrap"><strong>
MT
USA</strong></td>
<td width="10%" align="right" nowrap="nowrap">
没有城市/州的示例:(是的,有一个额外的换行符)
<td width="8%" nowrap="nowrap"></td>
<td width="22%" nowrap="nowrap"><strong>
USA</strong></td>
<td width="10%" align="right" nowrap="nowrap">
感谢您提供任何帮助。