R, рднрд╛рдЧ 2 рдореЗрдВ рд╡реЗрдм рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдирд╛ рдФрд░ Rcrawler рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ , рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ IMDB рдФрд░ Kinopoisk рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдореВрд╡реА рд░реЗрдЯрд┐рдВрдЧ рдПрдХрддреНрд░ рдХреА рдФрд░ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХреАред рдЧрд┐рддреБрдм рдкрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАред


рдХреЛрдб рдиреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рдПрдХ-рджреЛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рддреАрди рд╣рдЬрд╛рд░ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ "рдкрд░рд┐рдорд╛рд░реНрдЬрди" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХрд╛ рдХреЛрдб рдРрд╕реЗ "рдмрдбрд╝реЗ" рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрддрдирд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ



рдЬрдм рдореИрдВрдиреЗ 1000 рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП scraping_imdb.R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛


рдХреЛрдб рдЕрдиреБрдХреВрд▓рдиред read_html рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХрд▓ рдЙрдкрдпреЛрдЧ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, Labyrinth рдХрд┐рддрд╛рдмреЛрдВ рдХреА рджреБрдХрд╛рди рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ 100 рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдЧрддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ "рд╕рдмрд╕реЗ рдзреАрдореА" рдХреЛрдб рдлрд╝рдВрдХреНрд╢рди - read_html рдХрд╛ рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ HTML рдкреГрд╖реНрда рдХреЛ "рдкрдврд╝рддрд╛ рд╣реИ"ред рдореВрд╡реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рд╣рд░ рдмрд╛рд░ рдХреБрдЫ рдореВрд▓реНрдп (рдлрд┐рд▓реНрдо рдХрд╛ рдирд╛рдо, рд╡рд░реНрд╖, рд╢реИрд▓реА, рд░реЗрдЯрд┐рдВрдЧ) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП read_html рдЪрд▓рд╛рдпрд╛ред рдЕрдм рдЗрд╕ "рд╢рд░реНрдо" рдХреЗ рдирд┐рд╢рд╛рди рдХреЛ рдЧреАрддрд╛рд╣реБрдмрд╛ рд╕реЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИред рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ read_html рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдЪрд░ рдореЗрдВ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ html_nodes рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрд╣реБрдд рдЪрд░ рдХреЛ html_nodes рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ HTML рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рднреВрд▓рднреБрд▓реИрдпрд╛ рд╕реЗ, рдореБрдЭреЗ рдХреНрд░рдорд╢рдГ рд╕рд╛рдд рдорд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдХреЛрдб рдЬреЛ рдПрдХ HTML рдкреГрд╖реНрда рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрдврд╝рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд▓рдЧрднрдЧ рд╕рд╛рдд рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ! рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ "рдЧрддрд┐" рдХрд░реВрдВ, рдореИрдВ рдЙрди рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рднреВрд▓рднреБрд▓реИрдпрд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рд╕реНрдХреНрд░реИрдк рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред


рднреВрд▓рднреБрд▓реИрдпрд╛ рдореЗрдВ рдкреЗрдЬ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╣реАрдВ рдЫреВрдКрдБрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдмреБрдХрд╕реНрдЯреЛрд░ рдХреА рд╕реНрдХреНрд░реИрдкрдмреБрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╡рд╣ рдмрд╣реБрдд рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реАрдб-рд╕рд┐рдЯреАрдЬрд╝ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ, "рдЦрд╛рд▓реА рдлрд╝рд┐рд▓реНрдЯрд░" рд╡рд╛рд▓реЗ рд╢реИрд▓реА рдХреЗ рдЕрдиреБрднрд╛рдЧ рдХреЗрд╡рд▓ 17 рдкреГрд╖реНрда рджреЗрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╢реИрд▓реА рдореЗрдВ рд╕рднреА 8011 рдкреБрд╕реНрддрдХреЗрдВ "рд╕рдордХрд╛рд▓реАрди рд╡рд┐рджреЗрд╢реА рдЧрджреНрдп" рдЙрди рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред


рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрд╕реНрдЯ рдХреЗ рд╕рд╛рде https://www.labirint.ru/books/ **** рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╕рдЪ рдХрд╣реВрдВ, рддреЛ рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ "рдкреНрд░рд╛рдЪреАрди" рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рднреВрд▓рднреБрд▓реИрдпрд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЧрд░реНрд╡рд┐рдд рдкрд╣рд▓реЗ рдирдВрдмрд░ рдХреЗ рддрд╣рдд "рд╣рд╛рдЙ рдЯреВ рдореЗрдХ рдореЙрдирд╢реАрди" рдирд╛рдордХ рдПрдХ рдкреБрд╕реНрддрдХ рд╣реИред рдХрд╛рд╢, рдЬреНрдЮрд╛рди рдХреЗ рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЛ рдЦрд░реАрджрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╕рдВрднрд╡ рд╣реЛрддрд╛ред


рдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдкрддреЗ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдЬреЛ рдкреГрд╖реНрда рдореМрдЬреВрдж рд╣реИрдВ
  • рдЬреЛ рдкреГрд╖реНрда рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ

рдореМрдЬреВрджрд╛ рдкреГрд╖реНрда, рдмрджрд▓реЗ рдореЗрдВ, рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


  • рд╡реЗ рдкреГрд╖реНрда рдЬрд┐рдирдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдВ
  • рд╡реЗ рдкреГрд╖реНрда рдЬрд┐рдирдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИрдВ

рдореИрдВ рдПрдХ рдбреЗрдЯрд╛ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдд рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реВрдВ:


  1. рдЖрдИрдПрд╕рдмреАрдПрди - рдЖрдИрдПрд╕рдмреАрдПрди рдмреБрдХ рдирдВрдмрд░
  2. рдореВрд▓реНрдп - рдкреБрд╕реНрддрдХ рдореВрд▓реНрдп
  3. NAME - рдкреБрд╕реНрддрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ
  4. AUTHOR - рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХ
  5. рдкреНрд░рдХрд╛рд╢рди - рдкреНрд░рдХрд╛рд╢рди рдЧреГрд╣
  6. рд╡рд░реНрд╖ - рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рд╡рд░реНрд╖
  7. рдкреГрд╖реНрда - рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдлрд┐рд▓реНрдо рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рди рдкрд░ рдХреБрдЫ рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЦреЛрдЬ рдХреЗрд╡рд▓ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рд▓реМрдЯрд╛рдПрдЧреА рдЬреЛ рдЗрд╕реЗ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд▓рдВрдмрд╛рдИ рдЙрди рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдШрдЯ рдЬрд╛рдПрдЧреА рдЬреЛ рдЗрд╕реЗ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗред рдЗрд╕рд╕реЗ рдкреВрд░рд╛ рдврд╛рдВрдЪрд╛ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрд░реНрдХ рдореЗрдВ рдПрдХ рдФрд░ ... рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ html_nodes рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдорд╛рдиреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП NA рд▓реМрдЯрд╛рддрд╛ рд╣реИред


  PUBLISHER <- unlist(lapply(list_html, function(n){ publishing <- if(n != "NA") { publishing_html <- html_nodes(n, ".publisher a") publishing <- if(length(publishing_html) == 0){ NA } else { publishing <- html_text(publishing_html) } } else { NA } })) 

рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдБ рджреЛ ifs рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рджреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ "рдЖрдВрддрд░рд┐рдХ" if..esle рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдмрд╛рд╣рд░реА рд╕рдорд╕реНрдпрд╛ рдЧреИрд░-рдореМрдЬреВрдж рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддреА рд╣реИред


рдЙрди рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЬрд┐рдирдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдорд╛рди рдЕрдиреБрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм read_html рдЗрдирдкреБрдЯ read_html рдкреГрд╖реНрда рдХреЛ read_html , рддреЛ рдлрд╝рдВрдХреНрд╢рди read_html рддреНрд░реБрдЯрд┐ read_html рджреЗрдЧрд╛ рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддреА рдирд╣реАрдВ рд╣реИред


possibly рдкреИрдХреЗрдЬ рдХрд╛ possibly рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ред possibly рдХрд╛ рдЕрд░реНрде ( possibly quietly рдФрд░ safely рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛) рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐рдпреЛрдВ) рдХреЗ рдореБрджреНрд░рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред possibly рдПрдХ possibly(.f, otherwise) рд╕рдВрд░рдЪрдирд╛ рд╣реИ possibly(.f, otherwise) рдФрд░ рдпрджрд┐ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди (рдЕрдиреНрдпрдерд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 book_html <- possibly(read_html, "NA")(n) 

n рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдкрддреЗ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕реНрдХреНрд░реИрдк рдХрд┐рдпрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рд▓рдВрдмрд╛рдИ n рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореМрдЬреВрджрд╛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рддрддреНрд╡ read_html рдлрд╝рдВрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рд╛рдорд╛рдиреНрдп" рд░реВрдк рдореЗрдВ read_html , рдФрд░ рдмрд┐рдирд╛ рдкреГрд╖реНрда рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рдЪрд░рд┐рддреНрд░ рд╡реЗрдХреНрдЯрд░ "NA" рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдПрдХ рдЪрд░рд┐рддреНрд░ рд╡реЗрдХреНрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рд╣рдо рд╕рд┐рд░реНрдл NA рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкрдмреНрд▓рд┐рдХрд▓реА рдХреЛрдб рднрд╛рдЧ рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдиреНрдпрдерд╛ рдорд╛рди рдХреЛ NA рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред


рдФрд░ рдЕрдм рдкреНрд░рдХрд╛рд╢рдХ рдХрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рдмрд╛рд╣реНрдп рдпрджрд┐ ... рдЖрдВрддрд░рд┐рдХ рдХреЗ рд╕рдорд╛рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреИрд░-рдореМрдЬреВрдж рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдпрджрд┐ рд╡реИрд░рд┐рдПрдмрд▓ book_html "рдПрдирдП" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ "рд╕реНрдХреНрд░реИрдк рдХрд┐рдП рдЧрдП" рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ NA рдмрд░рд╛рдмрд░ рднреА рд╣реИ (рдпрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреАрдХрд╛рддреНрдордХ рджреЛрд╖ рдХреЗ рдмрдЬрд╛рдп "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" NA рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рддреЛ рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдорд┐рд▓рддреА рд╣реИ:


рдЖрдИрдПрд╕рдмреАрдПрдирдореВрд▓реНрдпрдирд╛рдорд▓реЗрдЦрдХрдкреНрд░рдХрд╛рд╢рдХрд╡рд░реНрд╖рдкреГрд╖реНрда
46653057703221488рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрд░реНрдЯ "рдкреНрдпрд╛рд░рд╛ рдкрд┐рд▓реНрд▓рд╛" (30 * 30 рд╕реЗрдореА) (рдбреАрдПрдЪ 6021) рд╕реЗрдЯ рдХрд░реЗрдВNAрдЕрджрд░рдХ рдХреА рдмрд┐рд▓реНрд▓реА2019NA
NANANANANANANA
9785171160814273рдЕрд░рдХрдбреА рдПрд╡реЗрд░реНрдирдЪреЛ: рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдирд┐рдпрд╛рдБрд▓реЗрдЦрдХ: рдПрд╡реЗрд░реЗрдВрдХреЛ рдЕрд░реНрдХрдбреА рдЯрд┐рдореЛрдлреАрд╡рд┐рдЪ, рдХрд▓рд╛рдХрд╛рд░: рд╡реНрд▓рд╛рд╕реЛрд╡рд╛ рдЕрдиреНрдирд╛ рдпреБрд▓рд┐рд╡реЗрдирд╛рдмрдЪреНрдЪрд╛2019288

рдЕрдм рд╡рд╛рдкрд╕ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рддреНрд╡рд░рдг рдХреЗ рд╕рд╛рдеред


R. рд╕реНрдкреАрдб рддреБрд▓рдирд╛ рдФрд░ read_html рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ read_html рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ read_html

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрд░ рдореЗрдВ рд╕рднреА рдЧрдгрдирд╛ рдПрдХ рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рдЬрдм рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдХреЛрд░ рдкрд╕реАрдирд╛ рдЖ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╣рдЬрд╛рд░реЛрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ "рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ" рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдмрд╛рдХреА рд╕рд╛рдереА рдХреБрдЫ рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХрд░рдХреЗ "рдХреВрд▓рд┐рдВрдЧ" рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд / рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрддреА рд╣реИред


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


рдореИрдВ рдЖрдкрдХреЛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреА рдереАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореЗрд░реА рдпреЛрдЬрдирд╛ рдпрд╣ рдереА: рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ 100 "рд░реАрдб" read_html рдкреГрд╖реНрдареЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА read_html рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рдореБрдЭреЗ рдмрд╕ рд╡рд╣ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓реЗ рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛: рдореБрдЭреЗ рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реА, рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдЖрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕ рдкрд░ рдмрд╣реБрдд рдХрдо рд╕рдордп рдмрд┐рддрд╛рдирд╛ред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:


 Error: external pointer is not valid 

рдирддреАрдЬрддрди, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рдереА, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд░рд╣реЗ рдереЗ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, рдорддрд▓рдм рдХреЗ рдХрд╛рдиреВрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЧрдиреЗрдЯ рдореЗрдВ рд╣реЗрдирд░рд┐рдХ рдмреЗрдВрдЧреНрд╕рдЯрди рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдорд┐рд▓реАред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ xml2 рдкреИрдХреЗрдЬ рдХреЗ рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╝рдВрдХреНрд╢рди рдЧреИрд░-рдирд┐рд░реНрдпрд╛рдд рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред
)ред рдпреЗ рд╡рд╕реНрддреБрдПрдБ рдЗрд╕ R рд╕рддреНрд░ рдореЗрдВ "рдмрдВрдзреА рд╣реБрдИ" рд╣реИрдВ рдФрд░ рдЗрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереАред рдЗрд╕рд▓рд┐рдП, рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ "рдкреВрд░реНрдг рдЪрдХреНрд░" рд╕рдВрдЪрд╛рд▓рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдПрдХ HTML рдкреГрд╖реНрда рдкрдврд╝рдирд╛, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕рд╛рдл рдХрд░рдирд╛ред


рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рдЦреБрдж рдХреЛ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдФрд░ рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ред рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рди рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ parallel рдкреИрдХреЗрдЬ рдХреЗ parLapply рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ parLapply ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ doParallel ( parallel рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдЕрдкрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдпрд╛ рднреВрд▓ рдЧрдП рд╣реИрдВ, рддреЛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рддрдиреЗ detectCores рдорджрдж рдХрд░реЗрдВрдЧреЗ detectCores


 # detectCores - ,     number_cl <- detectCores() 

рдЕрдЧрд▓рд╛, R рдХреА рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рддрд┐рдпрд╛рдБ рдмрдирд╛рдПрдБ:


  # makePSOCKcluster -    R,    cluster <- makePSOCKcluster(number_cl) registerDoParallel(cluster) 

рдЕрдм рд╣рдо рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЙрди рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХрдм рд╕реЗ рдирдП рд╕рддреНрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрд░ рдкреИрдХреЗрдЯ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Spider_parallel.R рдореЗрдВ, рдпрд╣ stringr рдкреИрдХреЗрдЬ stringr рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ: рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


рдФрд░ рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рдЧрднрдЧ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ lapply рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред parLapply рд╣рдо рдкрддреЗ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдФрд░, рдПрдХрдорд╛рддреНрд░ рдЬреЛрдбрд╝, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ред


 # parLapply -  lapply     big_list <- parLapply(cluster, list_url, scraping_parellel_func) #    stopCluster(cluster) 

рдпрд╣реА рд╕рдм рд╣реИ, рдЕрдм рдпрд╣ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред


рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрдгрдирд╛ рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛

рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ 5 рдЧреБрдирд╛ рддреЗрдЬ рдереА:


рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдЧрддрд┐


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдкреНрд░рдгрд╛рд▓реАрдЪрд▓рд╛ рдЧрдпрд╛
13.570.40112.84

рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рд╕реНрдкреАрдб


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдкреНрд░рдгрд╛рд▓реАрдЪрд▓рд╛ рдЧрдпрд╛
0.140.0521.12

рдХреНрдпрд╛ рдХрд╣рдирд╛ рд╣реИ? рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдкреИрджрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдкрдХрд╛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреА рд╣реИред рдирд╛рднрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЧрддрд┐ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд▓рдЧрднрдЧ рдмрдврд╝ рдЬрд╛рдПрдЧреАред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреЛрдб рдХреЛ 7 рдЧреБрдирд╛ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ (рд╣рд░ рдХрджрдо рдкрд░ read_html рдЧрдгрдирд╛ read_html рдмрдВрдж рдХрд░ рджрд┐рдпрд╛), рдФрд░ рдлрд┐рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдФрд░ 5ред рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдФрд░ foreach рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╕реНрдкрд╛рдЗрдбрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЧрд┐рддреБрдм рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИрдВред


Rcrawler рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрд╡рд▓реЛрдХрдиред рдЧрддрд┐ рддреБрд▓рдирд╛ред

HTML рдкреЗрдЬреЛрдВ рдХреЛ R рдореЗрдВ рд╕реНрдХреНрд░реИрдк рдХрд░рдиреЗ рдХреЗ рдХрдИ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ Rcrawler рдкреИрдХреЗрдЬ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ ред рдЖрд░ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЖрдк Rcrawler рдкрддреЗ рдкрд░ рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ Rcrawler рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐рдкреВрд░реНрд╡рдХ, рдкреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрда, рдкреВрд░реА рд╕рд╛рдЗрдЯ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред Rcrawler рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Rcrawler рдХреЗ рдХрдИ рддрд░реНрдХ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рдЗрдЯ рдХреЗ рд╕реЗрдХреНрдЯрд░ (рдЙрдкрдпреЛрдЧреА рдЬрдм рд╕рд╛рдЗрдЯ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреГрд╖реНрда рд╣реЛрддреЗ рд╣реИрдВ), рдЦреЛрдЬ рдХреА рдЧрд╣рд░рд╛рдИ, URL рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдЬреЛ рдирдХрд▓реА рдкреГрд╖реНрда рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдирд╛рдВрддрд░ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рддрд░реНрдХреЛрдВ no_cores (рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓) рдФрд░ no_conn (рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рд╕реЗ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ, рдПрдХ ContentScraper рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рдореБрдЭреЗ рдЦреБрдж рдпрд╣ рдХрд╛рд░реНрдп рдкрд╕рдВрдж рдЖрдпрд╛ - рдпрд╣ рд╕реНрдХреНрд░реИрдкрд┐рдВрдЧ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╣рдЬ рд╕реНрддрд░ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣рд╛рдБ рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ .. рддреЛ рд▓рд╛рдкрддрд╛ рдкреГрд╖реНрдареЛрдВ рдпрд╛ рд▓рд╛рдкрддрд╛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред


 #   ContentScraper: # CssPatterns -    CSS    . # ExcludeCSSPat -    CSS ,    . # ,   CSS     CSS ,    . # ManyPerPattern -  FALSE,       , #  .  TRUE,     ,   . # PatternsName -      .   #   c  ,      t_func <- function(n){ library(Rcrawler) t <- ContentScraper(n, CssPatterns = c("#product-title", ".authors", ".buying-price-val-number", ".buying-pricenew-val-number", ".publisher", ".isbn", ".pages2"), ExcludeCSSPat = c(".prodtitle-availibility", ".js-open-block-page_count"), ManyPerPattern = FALSE, PatternsName = c("title", "author", "price1", "price2", "publisher", "isbn", "page")) return(t) } ", #   ContentScraper: # CssPatterns -    CSS    . # ExcludeCSSPat -    CSS ,    . # ,   CSS     CSS ,    . # ManyPerPattern -  FALSE,       , #  .  TRUE,     ,   . # PatternsName -      .   #   c  ,      t_func <- function(n){ library(Rcrawler) t <- ContentScraper(n, CssPatterns = c("#product-title", ".authors", ".buying-price-val-number", ".buying-pricenew-val-number", ".publisher", ".isbn", ".pages2"), ExcludeCSSPat = c(".prodtitle-availibility", ".js-open-block-page_count"), ManyPerPattern = FALSE, PatternsName = c("title", "author", "price1", "price2", "publisher", "isbn", "page")) return(t) } ", #   ContentScraper: # CssPatterns -    CSS    . # ExcludeCSSPat -    CSS ,    . # ,   CSS     CSS ,    . # ManyPerPattern -  FALSE,       , #  .  TRUE,     ,   . # PatternsName -      .   #   c  ,      t_func <- function(n){ library(Rcrawler) t <- ContentScraper(n, CssPatterns = c("#product-title", ".authors", ".buying-price-val-number", ".buying-pricenew-val-number", ".publisher", ".isbn", ".pages2"), ExcludeCSSPat = c(".prodtitle-availibility", ".js-open-block-page_count"), ManyPerPattern = FALSE, PatternsName = c("title", "author", "price1", "price2", "publisher", "isbn", "page")) return(t) } "), #   ContentScraper: # CssPatterns -    CSS    . # ExcludeCSSPat -    CSS ,    . # ,   CSS     CSS ,    . # ManyPerPattern -  FALSE,       , #  .  TRUE,     ,   . # PatternsName -      .   #   c  ,      t_func <- function(n){ library(Rcrawler) t <- ContentScraper(n, CssPatterns = c("#product-title", ".authors", ".buying-price-val-number", ".buying-pricenew-val-number", ".publisher", ".isbn", ".pages2"), ExcludeCSSPat = c(".prodtitle-availibility", ".js-open-block-page_count"), ManyPerPattern = FALSE, PatternsName = c("title", "author", "price1", "price2", "publisher", "isbn", "page")) return(t) } 

рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде, ContentScraper рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдорд╛рдЗрдирд╕ рд╣реИ - рдХрд╛рдо рдХреА рдЧрддрд┐ред


рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ Rcrawler ContentScraper ContentScraper Rcrawler


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдкреНрд░рдгрд╛рд▓реАрдЪрд▓рд╛ рдЧрдпрд╛
47.470.29212.24

рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреНрд░реЙрд▓рд░ рдХрдВрдЯреЗрдВрдЯрд╕реНрдХреНрд░реИрдкрд░ ContentScraper Rcrawler


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдкреНрд░рдгрд╛рд▓реАрдЪрд▓рд╛ рдЧрдпрд╛
0.010.0067.97

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдпреВрдЖрд░рдПрд▓ рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ Rcrawler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреГрд╖реНрдареЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдеред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдзреАрдореА рдЧрддрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рднреЛрдВ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧреАред


рдореИрдВ рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА, рд╕реБрдЭрд╛рд╡, рд╢рд┐рдХрд╛рдпрдд рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛
рдЬреАрдердм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд▓рд┐рдВрдХ
рдореЗрд░реА рдордВрдбрд▓реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓

Source: https://habr.com/ru/post/hi464399/


All Articles