在诸如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 – Northern Powerhouse Investment Fund</a></p>
我想我可以再次解析来源,这次寻找匹配之前有<a>
的搜索字词,但我有一种(可能没有根据的)感觉这可能是有点脆。什么是更强大的方法?
注意:我知道我可以查看 BeautifulSoup , lxml , scrapy 等来实现这一目标,但考虑到速度是至关重要的,并且一旦我做了这个超链接或非决定,将会有很少的解析,我希望保持简单。
答案 0 :(得分:0)
我最近不得不构建一个忽略<a></a>
标记内任何匹配的解决方案。我的方法如下:
在预处理过程中,搜索并记录所有<a.*>
和</a>
字符串的位置 - 我使用了一个数组,其中每个条目包含起始和停止位置,{{1}分别和<a>
。
然后,当您搜索匹配项时,确定匹配是否在超链接标记内是一个简单的问题,即运行标记列表&#39;开始/停止位置,看看匹配的偏移是否在任何一个内。