Python在网页上查找文件下载链接
Posted
技术标签:
【中文标题】Python在网页上查找文件下载链接【英文标题】:Python find file download link on webpage 【发布时间】:2012-07-01 09:35:13 【问题描述】:我需要一个正则表达式,它将返回包含在双引号之间的文本,该双引号以指定的文本块开头,并以特定的文件扩展名(比如 .txt)结束。我正在使用 urllib2 来获取页面的 html(html 很简单)。
如果我有类似的东西
<tr>
<td valign="top"><img src="/icons/unknown.gif" ></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(regex, string) 我输入的字符串是页面的 html。但我讨厌正则表达式。
谢谢!
【问题讨论】:
是时候再次链接我最喜欢的答案了:***.com/a/1732454/10077 好吧,这就结束了。现在来点完全不同的东西!谢谢! 【参考方案1】:您不应为此任务使用正则表达式。使用BeautifulSoup 编写脚本来处理 HTML 并找到您需要的元素要容易得多。
在您的情况下,您应该搜索其href
属性以Client-
开头并以.txt
结尾的所有<a>
元素。这将为您提供所有文件的列表。
【讨论】:
我一直在避免使用 beautifulSoup,因为我只想使用基本 python 包中包含的工具。但由于正则表达式不能胜任这项任务,我想我将不得不硬着头皮。谢谢! 您还可以使用 Python 的 HTMLParser 解析 HTML:docs.python.org/library/htmlparser.html。但是代码会比使用 BeautifulSoup(专门用于抓取)更长。 如果您可以使用外部库并且已经知道 css 或 jquery 选择器 pyquery 是最好的选择。但是对于这项任务,我只会使用正则表达式【参考方案2】:soup = BeautifulSoup('<tr><td valign="top"><img src="/icons/unknown.gif" ></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'])
【讨论】:
以上是关于Python在网页上查找文件下载链接的主要内容,如果未能解决你的问题,请参考以下文章
python爬虫 将在线html网页中的图片链接替换成本地链接并将html文件下载到本地