рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣
рдврд╛рдВрдЪреЗ рдХреЗ рдЖрдХрд╕реНрдорд┐рдХ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдЙрдкрдХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ

- рдПрдХ рдордХрдбрд╝реА рдмрдирд╛рдПрдБ рдЬреЛ GET рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ,
- рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВ
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдбреЗрдЯрд╛ред
рд╕реНрдерд╛рдкрдирд╛
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ: рдЕрдЬрдЧрд░ 2.5+ (рддреАрд╕рд░реА рд╢рд╛рдЦрд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ), рдореБрдбрд╝, lxml рдпрд╛ libxml2, simplejson, pyopenssl (HTTPS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ
рдЙрдмрдВрдЯреВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЧрд╛рдЗрдб рдкреГрд╖реНрда рдЕрдиреНрдп рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рднреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдп
рд╕рдВрднрд╡рддрдГ, рдХреЛрдИ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рдж рд╡рд┐рд╡рд░рдг рдФрд░ рдлреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдкреВрд░реА рд╕реВрдЪреА рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЪрд▓реЛ рдХреБрдЫ рдЦреБрд▓реЗ рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рд╢реИрдХреНрд╖рд┐рдХ рд╕рдВрд╕реНрдерд╛рдиреЛрдВ рдХреА рдПрдХ
рд╕реВрдЪреА ред рд╕рд╛рдЗрдЯ рдХрд╛рдлреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдЪрд╛рд▓реЗрдВ рджрд┐рдЦрд╛ рд╕рдХрддреА рд╣реИред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдПрдХ рдордХрдбрд╝реА рд▓рд┐рдЦ рд▓реЗрдВ, рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рд╕рд╛рдЗрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд╛рдЗрдЯ рдлрд╝реНрд░реЗрдо (!) рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдлрд╝реНрд░реЗрдорд╕реЗрдЯ рдореЗрдВ рд╣рдо рдПрдХ
рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд░реЗрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЦреЛрдЬ рд░реВрдк рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореЙрд╕реНрдХреЛ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ, "рдЦреЛрдЬреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреЗрдЬрд┐рдВрдЧ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдЬ рд╣реИ, рдкреНрд░рддрд┐ рдкреЗрдЬ 15 рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рд╣реИрдВред рдлрд╝рд┐рд▓реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ GET рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрдиред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ:
- Abitur.nica.ru/new/www/search.php?region=77&town=0&opf=0&type=0&spec=0&ed_level=0&ed_form=0&qualif=&substr=&page=1 рдкрд░ рдЬрд╛рдПрдВ
- рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ, рдкреГрд╖реНрда рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП
- рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рд╡рд┐рд╡рд░рдг abitur.nica.ru/new/www/vuz_detail.php?code=486┬оion=77&town=0&opf=0&type=0&spec=0&sp_level=0&ed_form=0&qualif=&substr=&page=1 рдкрд░ рдЬрд╛рдПрдВред
- рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рд╡рд┐рд╡рд░рдг рд╕рд╣реЗрдЬреЗрдВ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг
рд╣рдо рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд┐рдд рд╣реЛрдЧреА, рдЗрд╕реЗ рдмрдирд╛рдПрдВ:
scrapy startproject abitur cd abitur
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ
рдЕрдмрд┐рддреНрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:
- рдЖрдЗрдЯрдореНрд╕ рдереНрд░реЗрдб рдореЗрдВ рд╡реЗ рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдПрдХрддреНрд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдбреЗрдЯрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреА рд╣реИрдВ
- рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреНрдбреЛ рдЖрдкрдХреЛ рдПрдХ рдордХрдбрд╝реА рдХреЛ рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ, рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ,
- рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдерд┐рдВрдХрдкреИрдб рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реНрдкрд╛рдЗрдбрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВ,
- рдордХрдбрд╝рд┐рдпреЛрдВ - рд╡рд╣ рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕рдореЗрдВ рдордХрдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкрд╛рдЗрдбрд░ рдЖрдорддреМрд░ рдкрд░ name_spider.py рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдордХрдбрд╝реА
рдирд┐рд░реНрдорд┐рдд рдордХрдбрд╝рд┐рдпреЛрдВ / abitur_spider.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдордХрдбрд╝реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ
class AbiturSpider(CrawlSpider): name = "abitur" allowed_domains = ["abitur.nica.ru"] start_urls = ["http://abitur.nica.ru/new/www/search.php?region=77&town=0&opf=0&type=0&spec=0&ed_level=0&ed_form=0&qualif=&substr=&page=1"] rules = ( Rule(SgmlLinkExtractor(allow=('search\.php\?.+')), follow=True), Rule(SgmlLinkExtractor(allow=('vuz_detail\.php\?.+')), callback='parse_item'), ) "..."
рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛
рдХреНрд░реЙрд▓рд╕реНрдкрд╛рдЗрдбрд░ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд▓рд┐рдВрдХ рдкреИрдЯрд░реНрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐ рдордХрдбрд╝реА рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдирд┐рдХрд╛рд▓реЗрдЧреА рдФрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдЧреАред
рдХреНрд░рдо рдореЗрдВ:
- рдирд╛рдо - рдордХрдбрд╝реА рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
- рдЕрдиреБрдордд_рдбреЛрдореЗрдВрд╕ - рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдбреЛрдореЗрди рдЬрд┐рд╕рдХреЗ рдЖрдЧреЗ рдордХрдбрд╝реА рдирд╣реАрдВ рдЦреЛрдЬреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП,
- start_urls - рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрддреЗ рдХреА рд╕реВрдЪреА,
- рдирд┐рдпрдо - рд▓рд┐рдВрдХ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛, рдирд┐рдпрдореЛрдВ рдХреЗ рдмреАрдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рд╣рдо рдЬрд▓реНрдж рд╣реА рдЙрд╕рдХреЗ рдкрд╛рд╕ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред
рддрддреНрд╡реЛрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛,
рдЖрдЗрдЯрдореНрд╕рд╣реЛрдо рдореЗрдВ рдРрд╕реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдбреЗрдЯрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреА рд╣реИрдВред
рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
class AbiturItem(Item): name = Field() state = Field() "..."
рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╢реИрдХреНрд╖рд┐рдХ рд╕рдВрд╕реНрдерд╛рди "рд░рд╛рдЬреНрдп" рдФрд░ "рдЧреИрд░-рд░рд╛рдЬреНрдп" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдмреВрд▓рд┐рдпрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рджрд┐рдирд╛рдВрдХ "1 рдЬрдирд╡рд░реА, 2011" рдХреЛ "01.01.2011" рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВрдбрд▓рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд░рд╛рдЬреНрдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
class AbiturItem(Item): name = Field() state = Field(input_processor=MapCompose(lambda s: not re.match(u'\s*', s))) "...."
MapCompose рд░рд╛рдЬреНрдп рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдХрд┐рд╕реА рдкреГрд╖реНрда рдкрд░ рдЖрдЗрдЯрдо рдЦреЛрдЬреЗрдВ
рд╡рд╛рдкрд╕ рд╣рдорд╛рд░реЗ parse_item рдкрджреНрдзрддрд┐ рдкрд░ред
рдЖрдк рдкреНрд░рддреНрдпреЗрдХ
рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗ рднреА рдЬреБрдбрд╝рд╛ рд╣реИред
class AbiturLoader(XPathItemLoader): default_input_processor = MapCompose(lambda s: re.sub('\s+', ' ', s.strip())) default_output_processor = TakeFirst() class AbiturSpider(CrawlSpider): "..." def parse_item(self, response): hxs = HtmlXPathSelector(response) l = AbiturLoader(AbiturItem(), hxs) l.add_xpath('name', '//td[@id="content"]/h1/text()') l.add_xpath('state', '//td[@id="content"]/div/span[@class="gray"]/text()') "..." return l.load_item()
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЪрд░рдо рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕реНрдерд╛рди рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рд▓реЛрдбрд░ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдо рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдордиреЗ AbiturItem рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛:
class AbiturLoader(XPathItemLoader): "..." state_in = MapCompose(lambda s: not re.match(u'\s*', s))
рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡реИрд╕рд╛ рдХрд░реЗрдВред
Parse_item () рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЖрдЗрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди (рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд▓рд╛рдЗрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд) рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдирдХ рд╕реНрдХреНрд░реИрдкреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдВрдЧреЙрдбрдм рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВред
рдЗрд╕ рддрддреНрд╡ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ
XPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ
рдпрд╣рд╛рдБ рдпрд╛
рдпрд╣рд╛рдБ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдпрджрд┐ рдЖрдк FirePath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдВрджрд░ tbody рдЯреИрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
XPath рдкрдереЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреАред рдЬрдм рдЖрдк
XPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
рдЯреЗрдХрдлрд╝рд░реНрд╕реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рд▓реЗрддрд╛ рд╣реИред
рд▓рд╛рдВрдЪ
рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ
scrapy crawl abitur --set FEED_URI=scraped_data.csv --set FEED_FORMAT=csv
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдмрддрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣
рд╕реНрдХреНрд░реЗрдкреА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛
рд╣реИ :
- рдЕрдкрдиреЗ HTML рдФрд░ XML рдХрд╛ рдбреЗрдЯрд╛ рдЦреЛрдЬ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдирд┐рд░реНрдпрд╛рдд рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд░реВрдкрд╛рдВрддрд░рдг
- JSON, CSV, XML рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
- рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
- рд╕реНрд╡рдпрдВ рдХреЗ рдмрд┐рдЪреМрд▓рд┐рдпреЛрдВ, рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдврд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░
- POST рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди, рдХреБрдХреАрдЬрд╝ рдФрд░ рд╕рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдкреНрд░рдорд╛рдгреАрдХрд░рдг
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рд╕реНрдкреВрдлрд┐рдВрдЧ
- рд╢реЗрд▓ рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓
- рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо
- рд╡реЗрдм рдЖрдзрд╛рд░рд┐рдд рдирд┐рдЧрд░рд╛рдиреА
- рдЯреЗрд▓рдиреЗрдЯ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрди
рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ,
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝реЗрдВ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг
GitHub рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред