我在家中有一个小项目,我需要偶尔刮去一个网站以进行链接,然后将链接保存在TXT文件中。
脚本需要在我的Synology NAS上运行,因此,无需使用任何插件或外部库即可以Bash脚本或Python编写脚本,因为我无法将其安装在NAS上。(无论如何我都知道)
链接看起来像这样:
<a href="http://www.example.com">Example text</a>
我想将以下内容保存到我的文本文件中:
Example text - http://www.example.com
我以为我可以用卷发和一些Grep(或Regex)隔离文本。首先,我研究了使用零食或Beutifulsoup,但找不到将其安装在NAS上的方法。
你们中的一个可以帮助我将脚本放在一起吗?
您可以使用python免费运送的urllib2
。使用它,您可以轻松获取任何URL
import urllib2
response = urllib2.urlopen('http://python.org/')
html = response.read()
现在,关于解析HTML。您仍然可以在不安装它的情况下使用BeautifulSoup
。从他们的网站上说:" 您还可以在项目中直接下载tarball并在项目中使用BeautifulSoup.py"。因此,在Internet上搜索该BeautifulSoup.py
文件。如果找不到它,请下载此并保存到项目内的本地文件中。然后像下面一样使用它:
soup = BeautifulSoup(html)
for link in soup("a"):
print link["href"]
print link.renderContents()
我建议使用python的htmlparser库。它将该页面分析为您的对象层次结构。然后,您可以找到A HREF标签。
http://docs.python.org/2/library/htmlparser.html
有很多使用此库查找链接的示例,因此我不会列出所有代码,但是这是一个工作示例:使用htmlparser
从页面中提取绝对链接编辑:
正如Oday指出的那样,HTMLPARSER是一个外部库,您可能无法加载它。在这种情况下,以下是内置模块的两个建议,可以完成您需要的事情:
htmllib
包含在Python 2.x中。xml
包含在Python 2.x和3.x中。
在本网站其他地方也有一个很好的解释,即如何使用WGET&amp;grep做同样的事情:
蜘蛛网站并仅返回URL
基于您的示例,您需要这样的东西:
wget -q -O- https://dl.dropboxusercontent.com/s/wm6mt2ew0nnqdu6/links.html?dl=1 | sed -r 's#<a href="([^"]+)">([^<]+)</a>.*$#2 - 1#' > links.txt
cat links.txt
输出:
1Visit W3Schools - http://www.w3schools.com/
2Visit W3Schools - http://www.w3schools.com/
3Visit W3Schools - http://www.w3schools.com/
4Visit W3Schools - http://www.w3schools.com/
5Visit W3Schools - http://www.w3schools.com/
6Visit W3Schools - http://www.w3schools.com/
7Visit W3Schools - http://www.w3schools.com/