Как написать простой spider на Python?
-
05-07-2019 - |
Вопрос
Я пытался написать этого паука в течение нескольких недель, но безуспешно.Каков наилучший способ для меня закодировать это на 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, но безуспешно.Посмотрите мой предыдущий вопрос.
Спасибо.
Решение
http://www.ibm.com/developerworks/linux/library/l-spider/ Статья IBM с хорошим описанием
или
http://code.activestate.com/recipes/576551/ Поваренная книга на Python, лучший код, но меньше объяснений
Другие советы
Кроме того, я предлагаю вам прочитать:
Регулярное выражение соответствует открытым тегам, за исключением автономных тегов XHTML
Прежде чем вы попытаетесь разобрать HTML с помощью регулярного выражения.Затем подумайте о том, что происходит в первый раз, когда чье-то имя вынуждает страницу использовать unicode вместо latin-1.
Редактировать:Чтобы ответить на ваш вопрос о библиотеке для использования в Python, я бы предложил Прекрасный Суп, который является отличным парсером HTML и повсюду поддерживает unicode (и действительно хорошо справляется с искаженным HTML, который вы найдете повсюду).