Web Scraper不使用Python生成结果

时间:2013-01-03 18:48:51

标签: python

我是一只需要你帮助的年轻蚱蜢。我做了很多研究,似乎无法找到解决方案。我在下面写了下面的代码。跑步时它不会拉任何标题。我相信我的正则表达是正确的。不确定是什么问题。经验丰富的老师可能很明显。提前谢谢。

from urllib import urlopen

import re

url = urlopen('http://www.realclearpolitics.com/epolls/2012/senate/ma/massachusetts_senate_brown_vs_warren-2093.html#polls').read()

'''
a href="http://multimedia.heraldinteractive.com/misc/umlrvnov2012final.pdf">Title a>
'''

A = 'a href.*pdf">(expression to pull everything) a>' 

B = re.compile(A) 

C = re.findall(B,url)

print C

2 个答案:

答案 0 :(得分:3)

这常常出现在SO上。您应该使用HTML解析器来搜索/遍历文档树,而不是使用正则表达式。

我会使用BeautifulSoup

  

美丽的汤解析你给它的任何东西,并为你做树遍历的东西。您可以告诉它“查找所有链接”,或“查找类externalLink的所有链接”,或“查找其网址匹配的所有链接”foo.com“,或”查找具有粗体文本的表格标题,然后给出我那个文字。“

>>> from bs4 import BeautifulSoup
>>> html = ? # insert your raw HTML here
>>> soup = BeautifulSoup(html)
>>> a_tags = soup.find_all("a")
>>> for anchor in a_tags:
>>> ...     print anchor.contents

答案 1 :(得分:0)

我将回应关于不使用RegEx解析HTML的其他评论,但有时它会快速而简单。看起来你的例子中的HTML不太正确,但我会尝试类似:

re.findall('href.*?pdf">(.+?)<\/a>', A)