Python在网页上查找文件下载链接

时间:2012-06-29 20:54:28

标签: python regex web-scraping beautifulsoup urllib2

我需要一个正则表达式,它将返回包含在以指定文本块开头的双引号之间的文本,并以特定文件扩展名(例如.txt)结束。我正在使用urllib2来获取页面的html(html非常简单)。

基本上,如果我有像

这样的东西
<tr>
  <td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td>
  <td><a href="Client-8.txt">new_Client-8.txt</a></td>
  <td align="right">27-Jun-2012 18:02  </td>
</tr>

应该回到我身边

Client-8.txt

返回值包含在双引号内。我知道文件名如何以“Client-”开头,文件扩展名为“.txt”。

我正在玩r.search(正则表达式,字符串),其中我输入的字符串是页面的html。但我对正则表达式很不满意。

谢谢!

2 个答案:

答案 0 :(得分:4)

您不应该使用正则表达式来执行此任务。使用BeautifulSoup编写脚本来处理HTML并找到所需的元素要容易得多。

在您的情况下,您应该搜索<a>属性以href开头并以Client-结尾的所有.txt个元素。这将为您提供所有文件的列表。

答案 1 :(得分:1)

soup = BeautifulSoup('<tr><td valign="top"><img src="/icons/unknown.gif" alt="[   ]"></td><td><a href="Client-8.txt">new_Client-8.txt</a></td><td align="right">27-Jun-2012 18:02  </td>')
x=soup.findAll('a')
for i in x:
    if '.txt' in i['href']:
        print(i['href'])