Как написать простой паук на Python? - PullRequest
1 голос
/ 26 ноября 2009

Я пытался написать этого паука в течение нескольких недель, но безуспешно. Как лучше всего написать код на Python:

1) Начальный URL: http://www.whitecase.com/Attorneys/List.aspx?LastName=A

2) из ​​исходного URL возьмите эти URL с этим регулярным выражением:

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) Перейдите к каждому из этих URL и отсканируйте информацию о школе с помощью этого регулярного выражения

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, но безуспешно. Смотрите мой предыдущий вопрос .

Спасибо.

Ответы [ 2 ]

4 голосов
/ 26 ноября 2009

http://www.ibm.com/developerworks/linux/library/l-spider/ статья IBM с хорошим описанием

или

http://code.activestate.com/recipes/576551/ Кулинарная книга на Python, лучший код, но меньше объяснений

0 голосов
/ 27 ноября 2009

Также я предлагаю вам прочитать:

RegEx соответствует открытым тегам, кроме автономных тегов XHTML

Прежде чем пытаться разобрать HTML с помощью регулярного выражения. Затем подумайте о том, что происходит в первый раз, когда чье-то имя заставляет страницу быть в кодировке Unicode вместо латиницы-1.

РЕДАКТИРОВАТЬ: Чтобы ответить на ваш вопрос о библиотеке для использования в Python, я бы предложил Beautiful Soup, , который является отличным парсером HTML и поддерживает юникод повсюду (и отлично справляется с искаженным HTML которые вы найдете повсюду).

...