我对python有中级知识。如果我必须在python中编写一个Web爬虫,我应该遵循什么,我应该从哪里开始。有没有具体的啧啧?任何建议都会有很大的帮助..谢谢
答案 0 :(得分:7)
我强烈建议您查看Scrapy。该库可以与BeautifulSoup或任何首选的HTML解析器一起使用。我个人将它与lxml.html一起使用。
开箱即用,您可以免费获得以下几项内容:
CrawlSpider
个对象以递归方式查找整个站点中的链接答案 1 :(得分:5)
你肯定需要一个html解析库。为此你可以使用BeautifulSoup。您可以在官方页面中找到大量用于获取网址和处理返回的html的示例和教程:http://www.crummy.com/software/BeautifulSoup/
答案 2 :(得分:5)
如果您仍想从头开始编写,则需要使用mechanize模块。它包括模拟浏览器所需的一切,并自动获取网址。我会多余,也会说BeautifulSoup解析你提取的任何html。否则,我会选择Scrapy ......
答案 3 :(得分:3)
为什么不寻找已经满足您需求的existing code?如果你需要自己构建一个,那么仍然需要查看现有代码并解构它以弄清楚它是如何工作的。
答案 4 :(得分:2)
这取决于您的需求。如果你需要基本的webscraping,那么mechanize + BeautifulSoup将会成功。
如果您需要渲染javascript,那么我会选择Selenium或spynner。两者都很棒。
答案 5 :(得分:2)
IBM Developer Works有一篇关于此https://www.ibm.com/developerworks/linux/library/l-spider/#N101C6的文章。您可能希望使用其他人建议的库,但这将使您全面了解流程。
答案 6 :(得分:1)
您可能需要的另一个好的库是解析Feed。现在您已经为网址设置了BeautifulSoup,您可以使用Feedparser作为Feed。 http://www.feedparser.org/
答案 7 :(得分:-1)
import re, urllib
textfile = file('depth_1.txt','wt')
print "Enter the URL you wish to crawl.."
print 'Usage - "http://dynamichackerboys.blogspot.in" <-- With the double quotes'
myurl = input("@> ")
for i in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(myurl).read(), re.I):
print i
for ee in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(i).read(), re.I):
print ee
textfile.write(ee+'\n')
textfile.close()
打印'用法 - “http://dynamichackerboys.blogspot.in”&lt; - 使用双引号' myurl = input(“@&gt;”) 我在re.findall('''href =“'[”']''',urllib.urlopen(myurl).read(),re.I): 打印我 对于re.findall中的ee('''href =“'[”']''',urllib.urlopen(i).read(),re.I): 打印ee textfile.write(EE + '\ n') textfile.close()
在网站上抓取