如何用Python编写一个简单的蜘蛛?

时间:2009-11-26 19:07:55

标签: python web-crawler scrapy

我一直试图写这个蜘蛛数周但没有成功。我用Python编写代码的最佳方法是什么:

1)初始网址:http://www.whitecase.com/Attorneys/List.aspx?LastName=A

2)从最初的网址获取这些正则表达式的网址:

hxs.select('//td[@class="altRow"][1]/a/@href').re('/.a\w+')

[u'/cabel', u'/jacevedo', u'/jacuna', u'/aadler', u'/zahmedani', u'/tairisto', u
/zalbert', u'/salberts', u'/aaleksandrova', u'/malhadeff', u'/nalivojvodic', u'
....

3)转到每个网址并使用此正则表达式抓取学校信息

hxs.select('//td[@class="mainColumnTDa"]').re('(?<=(JD,\s))(.*?)(\d+)'

[u'JD, ', u'University of Florida Levin College of Law, <em>magna cum laude</em> , Order of the Coif, Symposium Editor, Florida Law Review, Awards for highest grades in Comparative Constitutional History, Legal Drafting, Real Property and Sales, ', u'2007']

4)将学好的学校信息写入schools.csv文件

你能帮我用Python编写这个蜘蛛吗?我一直在尝试用Scrapy写它但没有成功。请参阅我之前的question

谢谢。

2 个答案:

答案 0 :(得分:4)

http://www.ibm.com/developerworks/linux/library/l-spider/ IBM有良好描述的文章

http://code.activestate.com/recipes/576551/ Python手册,更好的代码,但解释更少

答案 1 :(得分:0)

另外,我建议你阅读:

RegEx match open tags except XHTML self-contained tags

在尝试使用正则表达式解析HTML之前。然后想想第一次有人的名字强制页面为unicode而不是latin-1时会发生什么。

编辑:为了回答你关于在Python中使用的库的问题,我建议Beautiful Soup,这是一个很棒的HTML解析器,并且支持整个unicode(并且对于格式错误的HTML做得非常好,你是去寻找各处。)