我正在使用Python学习网页报废。我试图从一个流行的金融网站的网站地图中提取所有链接。
<category>
<text>
<xsl:text>$course$/</xsl:text>
<xsl:value-of select="/office:document/office:meta/dc:title" />
</text>
</category>
此代码一无所获。虽然站点中存在许多具有上述匹配的链接。 样本:/ india / stockmarket / pricechartquote / A
答案 0 :(得分:2)
您是否尝试过检查此正则表达式是否与网址提供的部分相匹配 - 它不会:
>>> import re
>>>
>>> pattern = re.compile("^(/india/stockmarket/pricechartquote/)*$")
>>> pattern.search("/india/stockmarket/pricechartquote/A")
>>>
相反,你的意思是在pricechartquote/
匹配之后有最后一部分,例如,一个或多个大写字母:
>>> pattern = re.compile(r"^/india/stockmarket/pricechartquote/[A-Z]+$")
>>> pattern.search("/india/stockmarket/pricechartquote/A")
<_sre.SRE_Match object at 0x109240098>
请调整[A-Z]+
部分,具体取决于您希望在pricechartquote/
之后看到的字符集类型。
另请注意,您不必检查字符串的开头和结尾,并且最好使用部分网址匹配:
for link in bsObj.find_all("a", href=re.compile(r"/india/stockmarket/pricechartquote/")):
# ...