我将如何在单个网页上开始,比如在DMOZ.org的根目录下,并索引附加到它的每个网址。然后将这些链接存储在文本文件中。我不想要内容,只是链接本身。一个例子会很棒。我将如何在Python中创建一个简单的URL extracter?
回答
此,例如,将打印出来的链接上this very related (but poorly named) question:
import urllib2
from BeautifulSoup import BeautifulSoup
q = urllib2.urlopen('https://stackoverflow.com/questions/3884419/')
soup = BeautifulSoup(q.read())
for link in soup.findAll('a'):
if link.has_key('href'):
print str(link.string) + " -> " + link['href']
elif link.has_key('id'):
print "ID: " + link['id']
else:
print "???"
输出:
Stack Exchange -> http://stackexchange.com
log in -> /users/login?returnurl=%2fquestions%2f3884419%2f
careers -> http://careers.stackoverflow.com
meta -> http://meta.stackoverflow.com
...
ID: flag-post-3884419
None -> /posts/3884419/revisions
...
你应该在链接中使用'if'href''而不是'link.has_key'。 'has_key'已被弃用并从python 3中移除。 – Daenyth 2010-10-13 17:41:53
对我来说(Py 2.6.5,BS 3.0.8)''href'in link'返回'False',即使'link ['href']'会给我一个URL。尽管我对字典的工作不太了解。 zip(* link.attrs)[0]中的''href'确实可以工作,但是很丑陋。 – 2010-10-13 18:38:32
如果您坚持重新发明轮子,请使用像BeautifulSoup这样的html解析器来抓取所有标签。 This answer到一个类似的问题是相关的。
Scrapy是关于网络爬虫的一个Python框架。这里有很多例子:http://snippets.scrapy.org/popular/bookmarked/
- 1. 创建一个简单的Python菜单
- 2. 我将如何去创建一个简单的socket.IO聊天?
- 3. 如何使用我在python中创建的简单模块?
- 4. 如何创建一个简单的VPS
- 5. 如何在Angular SPA中创建一个简单的“构建”
- 6. 如何在scala/lift中创建一个简单的web表单
- 7. 如何在C++中创建一个简单的单例类?
- 8. 如何用多个主题在python中创建一个简单的测验?
- 9. 如何创建一个简单的python动画
- 10. 在Python中使用Tkinter创建一个简单的gui程序
- 11. 在Python中创建一个简单的推荐系统
- 12. 在Python中创建一个简单的点图
- 13. 在Python中创建一个简单的脚本语言
- 14. iPhone:我如何创建一个简单的完成按钮?
- 15. jQuery:我如何创建一个简单的覆盖?
- 16. 我如何创建一个简单的语义网页
- 17. 如何在NuSMV中创建一个简单的Kripke模型?
- 18. 如何在Android NDK中创建一个简单的NDK程序
- 19. 如何在任务栏中创建一个简单的动画?
- 20. 如何在android中创建一个简单的文本动画?
- 21. 如何在Neo4j中创建一个简单的插件?
- 22. 如何在java中创建一个简单的状态机
- 23. 如何在java中创建一个简单的加密算法?
- 24. 如何在Objective-C中创建一个简单的整数?
- 25. 如何在jQuery中创建一个简单的计算
- 26. 你如何在球拍中创建一个简单的变量?
- 27. 如何在我的Intranet中创建一个简单的小程序?
- 28. 我如何在android中创建一个简单的可扩展列表
- 29. 如何在Python中创建简单的网络连接?
- 30. 创建一个简单的IVR菜单
为什么你需要这个在python中? 'wget'可以做到这一点,而无需重新发明轮子 – Daenyth 2010-10-13 15:58:11
我在最好的操作系统,Windows,而不是Linux上编程:)。 – 2010-10-13 15:59:44
多层次。未确定的深度。 Wget适用于Windows。 – 2010-10-13 16:02:08