рд╕рд░рд▓ HTML рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрддреНрддрд╛, рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ HTML рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рдпрд╣ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдореЗрд░реА рд╕рднреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред
рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ lxml рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИ, рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдмрдирд╛рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпреЛрдВ



рд╡рд┐рд╡рд░рдг


Html рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓реАрдл.рдкрд╛рд░реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд▓рд╛рдЗрди рдкрд╛рд╕ рдХрд░рдиреА рд╣реЛрдЧреА:
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
  1. import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
  2. import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
  3. import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
  4. import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .
import leaf document = leaf.parse(sample) links = document ( 'div#menu a' ) # CSS link = document .get( 'div#menu a' ) # None ( ) * This source code was highlighted with Source Code Highlighter .

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЖрд╕рд╛рди рд╣реЛ рдЧрдИ рд╣реИ:
  1. рдкреНрд░рд┐рдВрдЯ рд▓рд┐рдВрдХ
  2. рд▓рд┐рдВрдХ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рднреА рдорд╛рдирдХ lxml рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рддрддреНрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ):
  1. рд▓рд┐рдВрдХ = рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ .xpath ( 'рд╢рд░реАрд░ / div / ul / li [@ рд╡рд░реНрдЧ = "рд╕рдХреНрд░рд┐рдп_рд▓рд┐рдВрдХ"]' ) [0]
  2. link.get ( 'a' ) .text
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЦреИрд░, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ HTML рдХреЗ рд▓рд┐рдП bbcode рдФрд░ рдЕрдиреНрдп рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд▓реЛрдХрдкреНрд░рд┐рдп рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  1. # Html рдХрд╛ рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдлрдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд
  2. # рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛ рдЬреЛ рдХреЗрд╡рд▓ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ
  3. # рд▓рд┐рдВрдХ [url] [/ url] рдореЗрдВ рд╕рдВрд▓рдЧреНрди
  4. def omgcode_formatter (рддрддреНрд╡, рдмрдЪреНрдЪреЗ):
  5. # рдмрджрд▓реЗрдВ рдПрдХ рдирдпрд╛ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде
  6. рдпрджрд┐ рддрддреНрд╡ред tag == 'br' :
  7. рд╡рд╛рдкрд╕реА '\ n'
  8. # рдкреЛрд▓рд┐рдВрдЧ рд▓рд┐рдВрдХ [url] [/ url] рдореЗрдВ
  9. рдЕрдЧрд░ element.tag == 'a' :
  10. рд╡рд╛рдкрд╕реА u "[url = link}] {text} [/ url]" .format (рд▓рд┐рдВрдХ = element.href, рдЯреЗрдХреНрд╕реНрдЯ = рдмрдЪреНрдЪреЗ)
  11. # рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░реЗрдВ
  12. # рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ред
  13. рдЕрдЧрд░ рдмрдЪреНрдЪреЗ:
  14. рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЛ
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рддрддреНрд╡ рд▓реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдЯреИрдЧ рдХрд╛ рдПрдХ HTML рддрддреНрд╡ рд╣реИ) рдФрд░ рдмрдЪреНрдЪреЛрдВ (рдЗрд╕ рддрддреНрд╡ рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдкрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо) рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВред
рдПрдХ рддрддреНрд╡ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП (рдЖрдк рдПрдХ рдЕрд▓рдЧ рдкрд░рдд рдФрд░ рдкреВрд░реЗ рдкреЗрдбрд╝ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):
  1. рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ .parse (omgcode_formatter)
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬрд╣рд╛рдБ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдХреЗ рдкрддреНрддреЛрдВ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдкрд╛рда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдп:

to_unicode - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдмрджрд▓реЗрдВ
strip_accents - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЙрдЪреНрдЪрд╛рд░рдг, umlauts рдФрд░ рдЬреИрд╕реЗ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ
stri_symbols - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдпреВрдирд┐рдХреЛрдб рд╡рд┐рд╢реЗрд╖ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдЕрдХреНрд╖рд░ рдФрд░ рд╕рд╛рдорд╛рди
strip_spaces - рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣рдЯрд╛рддрд╛ рд╣реИ
stri_linebreaks - рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рд╡рд┐рд░рд╛рдо рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ:


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


All Articles