使用xpath或regex(或其他)确定找到的字符串是否包含在超链接中

时间:2016-02-02 19:20:16

标签: python regex xpath web-scraping lxml

在诸如this之类的页面上,各个职位概述在超链接后面(但我的程序还不知道这一点;它只知道它已经到达了职位列表页面。)

给出搜索词,例如'高级项目经理',我刮取页面的来源以确定页面是否包含此字符串;

search_term = 'senior project manager'
url = 'http://british-business-bank.co.uk/what-the-british-business-bank-does/job-vacancies/'
source = urllib2.urlopen(url).read().lower()
found_a_match = search_term in source

在这种情况下,search_term True ,然后我想确定完整的职位描述是否在超链接后面。手动检查来源显示:

<p><a href="http://british-business-bank.co.uk/?p=6419">Senior Project Manager &#8211; Northern Powerhouse Investment Fund</a></p>

我想我可以再次解析来源,这次寻找匹配之前有<a> 的搜索字词,但我有一种(可能没有根据的)感觉这可能是有点脆。什么是更强大的方法?

注意:我知道我可以查看 BeautifulSoup lxml scrapy 等来实现这一目标,但考虑到速度是至关重要的,并且一旦我做了这个超链接或非决定,将会有很少的解析,我希望保持简单。

1 个答案:

答案 0 :(得分:0)

我最近不得不构建一个忽略<a></a>标记内任何匹配的解决方案。我的方法如下:

在预处理过程中,搜索并记录所有<a.*></a>字符串的位置 - 我使用了一个数组,其中每个条目包含起始和停止位置,{{1}分别和<a>

然后,当您搜索匹配项时,确定匹配是否在超链接标记内是一个简单的问题,即运行标记列表&#39;开始/停止位置,看看匹配的偏移是否在任何一个内。