2013-02-15 45 views
0

我想使用正则表达式来解析网站解析使用正则表达式网站在Python

blahblahblah 
<a href="THIS IS WHAT I WANT" title="NOT THIS">I DONT CARE ABOUT THIS EITHER</a> 
blahblahblah 

(有很多的这些,我想以某种形式的标记化所有的)。问题是“一个href”实际上有两个空格,而不仅仅是一个(有一些是“href”,有一个空格,我不想检索),所以使用LXML已经证明是相当痛苦的,而我不想使用BeautifulSoup(出于其他原因)。有谁知道我会怎么做呢?

谢谢!

+0

[RegEx match open tags not except XHTML self-contained tags]可能重复(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – JBernardo 2013-02-15 02:45:44

+0

没有这个不同。从href中挑出两个空间是困难的,而不是仅仅一个空间。对于它非常脆弱,我也很好,只要它确实符合我的要求,即提取出两个空格之间的href。 – user1922956 2013-02-15 03:13:43

+1

从另一个问题阅读第一个答案 – JBernardo 2013-02-15 03:28:07

回答

-1

我相信这个回答你的问题。这只是一些正则表达式,它会在打开'a'标签后得到所有的href,它们只有两个空格。

fh = open("index.html", 'r') 
rawString = fh.read() # read entire file to string 
fh.close() 

temp = re.findall("<a href=\".*?\"", rawString) 
if temp: 
    for i in range(len(temp)): # process each match 
     temp[i] = re.search("\".*?\"", temp[i]).group(0) # remove 'href=' 
    print temp  
else: 
    print "Not found" 

对于示例输出:

[“‘这就是我想要的’”]

0

根据您想要的鲁棒性级别,您可以在第一个镜头中获取标记并存储它,然后在字符串包含“”时替换“”到“”。这将有效地删除您的字符串中的任何多个空格。

这是需要注意的是using regex to parse HTML is not recommended =)

0

不要让你受的环节就是回答所折服每次有人问你同样的问题。它显然被认为是大量人们半自动引用的教理问答网页。 但是,在编程方面,就像在日常生活中,有问答问题,我们在现实中做了什么。
就个人而言,如果我不认为HTML可以完全用解析器解析,我推荐限制分析可以用正则表达式完成HTML的某些部分。这是一个实用的观点。
而且我确实通过正则表达式来分析网页。有时候会出现一些问题,但他们可以由开发者进行管理。正则表达式很快。有一次,我测量了美丽的汤比正则表达式慢了10倍,而lxml慢了大约50倍。
我比较熟练地用正则表达式获取Web数据,如果你想提示,我可以给一些,我的电子邮件在我的页面上。

+0

一个合理的观点,但你没有回答这个问题。 – alexis 2013-02-15 22:25:18