Web Scraping for beginner

Web Scraping āļ‰āļšāļąāļšāļ„āļ™āđ„āļĄāđˆāļĢāļđāđ‰āļ”āđ‰āļēāļ™āļ™āļĩāđ‰āđ€āļĨāļĒāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ„āļ”āđ‰ by Botnoi student

āđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļœāļĄāļˆāļ°āļžāļđāļ”āļ–āļķāļ‡āļāļēāļĢāļ—āļģ Web Scraping āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļ web page āļ•āđˆāļēāļ‡āđ† āđ€āļžāļ·āđˆāļ­āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ•āļēāļĄāļ—āļĩāđˆāđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢ āđ‚āļ”āļĒāļˆāļ°āđƒāļŠāđ‰ Library BeautifulSoup āđƒāļ™ Python āļ„āļĢāļąāļš

āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāļœāļĄāļˆāļ°āļĄāļēāđāļŠāļĢāđŒāđƒāļ™āļ§āļąāļ™āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļšāļēāļ‡āļŠāđˆāļ§āļ™āđƒāļ™ Botnoi data science classroom āđ€āļ›āđ‡āļ™āļ„āļĨāļēāļŠāļ—āļĩāđˆāđ€āļ›āļīāļ”āļŠāļ­āļ™āļŠāļģāļŦāļĢāļąāļšāļ„āļ™āļ—āļĩāđˆāļŠāļ™āđƒāļˆāļ”āđ‰āļēāļ™ Data Science āļ„āļĢāļąāļš āļ‹āļķāđˆāļ‡ web scraping āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļšāļ”āđ‰āļēāļ™āļ‡āļēāļ™āļ”āđ‰āļēāļ™ data āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ āđāļĨāļ°āļˆāļģāđ€āļ›āđ‡āļ™āļĄāļēāļāđāļ„āđˆāđ„āļŦāļ™āļ—āļĩāđˆāļˆāļ°āļ•āđ‰āļ­āļ‡āļĢāļđāđ‰ ?

āļ”āļąāļ‡āļ—āļĩāđˆāļ—āļĢāļēāļšāļāļąāļ™āļ§āđˆāļēāđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Data source) āļ—āļĩāđˆāđƒāļŦāļāđˆāļ—āļĩāđˆāļŠāļļāļ”āļ„āļ·āļ­ internet āļ™āļąāđ‰āļ™āđ€āļ­āļ‡āđāļĨāđ‰āļ§āđ€āļĢāļēāļˆāļ°āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™āļ™āļąāđ‰āļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļĨāđˆāļ° āļāđ‡āđ‚āļ”āļĒ web scraping āļ™āļąāđ‰āļ™āđ„āļ‡ āļ‹āļķāđˆāļ‡āļˆāļ°āļ—āļģāļāļēāļĢāļŠāļāļąāļ”āđāļĨāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđāļŦāļĨāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (āđƒāļ™āļ—āļĩāđˆāļ™āļĩāđ‰āļ„āļ·āļ­āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ) āđ€āļžāļ·āđˆāļ­āļ™āļģāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāđƒāļŠāđ‰ āļ”āļąāļ‡āđ€āļŠāđˆāļ™āļ§āđˆāļē data scientist āļŠāļēāļĄāļēāļ–āļŠāļĢāđ‰āļēāļ‡ model āđ€āļžāļ·āđˆāļ­āđ€āļ—āļĢāļ™āļŦāļļāđ‰āļ™ āļˆāļēāļāļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđˆāļēāļ§āļˆāļēāļāđ€āļ§āđ‡āļšāļ‚āđˆāļēāļ§āļ—āļąāđˆāļ§āđ„āļ› āļŦāļĢāļ·āļ­ data analyst āļ—āļģāļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāđ‰āļēāļ™āļ­āļēāļŦāļēāļĢāļ—āļĩāđˆāđ€āļ›āļīāļ”āđƒāļŦāļĄāđˆāļĨāđˆāļēāļŠāļļāļ”āđƒāļ™āđ€āļ‚āļ•āļāļĢāļļāļ‡āđ€āļ—āļžāđāļĨāļ°āļ›āļĢāļīāļĄāļ“āļ‘āļĨāđƒāļ™ Wongnai āļĄāļēāļ—āļģāļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđ€āļžāļ·āđˆāļ­āļˆāļ°āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđƒāļ™āļ”āđ‰āļēāļ™āļ˜āļļāļĢāļāļīāļˆāđ€āļ›āđ‡āļ™āļāļēāļĢāļ•āđˆāļ­āđ„āļ› āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļ§āđˆāļēāđ€āļĢāļēāļˆāļ°āļ™āļģāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļ”āđ‰āļĄāļēāļ™āļąāđ‰āļ™āđ„āļ›āđƒāļŠāđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ āļ‹āļķāđˆāļ‡āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āđ„āļĄāđˆāļĒāļēāļāđ€āļĨāļĒāļ„āļĢāļąāļš āđ€āļĢāļēāļĄāļēāļĨāļ­āļ‡ scrape website āđ€āļžāļ·āđˆāļ­āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāđƒāļŠāđ‰āļāļąāļ™āđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļ„āļĢāļąāļšSyncsort:

ETL (Extract, Transform and Load)

āļāđˆāļ­āļ™āļ­āļ·āđˆāļ™āđ€āļĢāļēāļĄāļēāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļāļąāļšāļ„āļģāļ§āđˆāļē web scraping āļāļąāļ™āļāđˆāļ­āļ™ web scraping āļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļš (web page) āđ‚āļ”āļĒāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļˆāļēāļāļĨāļąāļāļĐāļ“āļ°āļ‚āļ­āļ‡āļ āļēāļĐāļē HTML (Hyper Text Markup Language) āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļšāļ™āļ­āļīāļ™āđ€āļ•āļ­āļĢāđŒāđ€āļ™āđ‡āļ•āđƒāļ™āļĨāļąāļāļĐāļ“āļ°āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ āļĢāļđāļ›āļ āļēāļž āļ•āđˆāļēāļ‡āđ† āđ‚āļ”āļĒāļāļēāļĢāļˆāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāļ‚āļąāđ‰āļ™āļ•āđ‰āļ™ āđ€āļĢāļēāļ„āļ§āļĢāļ—āļĩāđˆāļˆāļ°āđ€āļ‚āđ‰āļēāđƒāļˆāļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡ web āļāđˆāļ­āļ™ āđ€āļžāļ·āđˆāļ­āļ—āļģāđƒāļŦāđ‰āļĢāļđāđ‰āļ§āđˆāļēāļ–āđ‰āļēāļˆāļ°āđ€āļĢāļēāļŠāļ™āđƒāļˆāļ‚āđ‰āļ­āļĄāļđāļĨāļ•āļĢāļ‡āļ™āļĩāđ‰āđƒāļ™āđ€āļ§āđ‡āļš āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļ”āļđāļ•āļĢāļ‡āļˆāļļāļ”āđ„āļŦāļ™ āļˆāļ°āđ„āļ”āđ‰āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āļ­āļ­āļāļĄāļēāļ„āļĢāļšāļ–āđ‰āļ§āļ™āđāļĨāļ°āļ–āļđāļāļ•āđ‰āļ­āļ‡āļ„āļĢāļąāļš

āđ€āļĢāļēāļĄāļēāļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ āļēāļĐāļē HTML āđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™āļāļąāļ™āļāđˆāļ­āļ™āđāļšāļšāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āļāļąāļ™āļ„āļĢāļąāļš

āļ āļēāļžāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļŦāļ™āđ‰āļē HTML Page

āđ‚āļ”āļĒāđāļ•āđˆāļĨāļ°āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļŦāļĨāļąāļāđ† āļˆāļ°āļĄāļĩāļŠāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļāļ”āļąāļ‡āļ™āļĩāđ‰

Tag name āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļĢāļ°āļšāļļāļĢāļđāļ›āđāļšāļšāļ„āļģāļŠāļąāđˆāļ‡ āļŦāļĢāļ·āļ­āļāļēāļĢāļĨāļ‡āļĢāļŦāļąāļŠāļ„āļģāļŠāļąāđˆāļ‡ āļ āļēāļĒāđƒāļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒ less-than bracket ( < ) āđāļĨāļ° greater-than bracket ( > ) āđ‚āļ”āļĒāļ—āļĩāđˆ Tag HTML āđāļšāđˆāļ‡āđ„āļ”āđ‰ 2 āļĨāļąāļāļĐāļ“āļ° āļ„āļ·āļ­

  • Tag āđ€āļ”āļĩāđˆāļĒāļ§ āđ€āļ›āđ‡āļ™ Tag āļ—āļĩāđˆāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļ›āļīāļ”āļĢāļŦāļąāļŠ āđ€āļŠāđˆāļ™ <meta>, <link> āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™

  • Tag āđ€āļ›āļīāļ”/āļ›āļīāļ” āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ tag āļ™āļĩāđ‰āļˆāļ°āđ€āļ›āđ‡āļ™āđāļšāļš <title> â€Ķ. </title> āđ‚āļ”āļĒāļ—āļĩāđˆ <title> āđ€āļĢāļēāđ€āļĢāļĩāļĒāļāļ§āđˆāļē tag āđ€āļ›āļīāļ” āđāļĨāļ° </title> āđ€āļĢāļēāđ€āļĢāļĩāļĒāļāļ§āđˆāļē tag āļ›āļīāļ”

āļ‹āļķāđˆāļ‡āđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰ tag āđ€āļžāļ·āđˆāļ­āļĢāļ°āļšāļļāļ•āļģāđāļŦāļ™āđˆāļ‡āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāļ„āļĢāļąāļš

Attribute āļ„āļ·āļ­ āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļšāļ­āļāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‚āļ­āļ‡ tag āļ™āļąāđ‰āļ™āđ€āļŠāđˆāļ™ <meta http-equiv=”Content type”> āđ€āļ›āđ‡āļ™āļāļēāļĢāļšāļ­āļāļ§āđˆāļē meta āļ™āļĩāđ‰āļšāļĢāļĢāļˆāļļ http āļ­āļĒāļđāđˆāđƒāļ™ tag (http-equiv)

Value āļ„āļ·āļ­ āļ„āđˆāļēāļ‚āļ­āļ‡ Tag āļ™āļąāđ‰āļ™ āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™ <meta http-equiv=”Content type”> āļĄāļĩ Value āļ„āļ·āļ­ “Content-Type”

Nefted-element āļ„āļ·āļ­ Tag āļĒāđˆāļ­āļĒāļ—āļĩāđˆāļ–āļđāļāļšāļĢāļĢāļˆāļļāļ­āļĒāļđāđˆ āļ­āļĒāđˆāļēāļ‡āđƒāļ™āļ āļēāļž Tag āđƒāļŦāļāđˆ āļ„āļ·āļ­ <head>â€Ķâ€Ķ</head> āđ‚āļ”āļĒāļĄāļĩ Nefted-element āļ„āļ·āļ­ <meta> ,<title>â€Ķ</title> āđāļĨāļ° <link>

āļ–āđ‰āļēāļŠāļ‡āļŠāļąāļĒāļ•āļĢāļ‡āđ„āļŦāļ™āļŠāļēāļĄāļēāļĢāļ–āļĻāļķāļāļĐāļēāđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ„āļ”āđ‰āļˆāļēāļāļĨāļīāļ‡āļ„āđŒāļ™āļĩāđ‰āđ€āļĨāļĒāļ„āļĢāļąāļš https://www.hellomyweb.com/course/html/structure_of_html/

Web-scraping ethics

āļāđˆāļ­āļ™āļ—āļĩāđˆāđ€āļĢāļēāļˆāļ°āļĄāļēāđ€āļĢāļīāđˆāļĄ Scraping āļāļąāļ™āļŠāļīāđˆāļ‡āļ™āļķāļ‡āļ—āļĩāđˆāđ€āļĢāļēāļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĨāļ·āļĄāļ„āļ·āļ­āļˆāļĢāļīāļĒāļ˜āļĢāļĢāļĄāđƒāļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™āļĄāļē āđ€āļžāļĢāļēāļ°āđ„āļĄāđˆāđƒāļŠāđˆāļ§āđˆāļēāļ—āļļāļāļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āđ€āļ§āđ‡āļšāļ—āļĩāđˆāđ€āļĢāļēāļˆāļ°āļ™āļģāļ­āļ­āļāļĄāļēāđƒāļŠāđ‰āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļŦāļĄāļ” āđ€āļžāļĢāļēāļ°āļšāļēāļ‡āļ­āļĒāđˆāļēāļ‡āļ—āļēāļ‡āđ€āļ§āđ‡āļšāļāđ‡āđ„āļ”āđ‰āļŠāļ‡āļ§āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āđ„āļ§āđ‰ āļ‹āļķāđˆāļ‡āļāļēāļĢāļ—āļĩāđˆāđ€āļĢāļēāđ„āļ›āļ”āļķāļ‡āļĄāļēāļˆāļ°āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļąāļāļŦāļēāļāļąāļšāļ—āļēāļ‡āđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™āđ„āļ”āđ‰

āđ‚āļ”āļĒāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™āļŠāļ‡āļ§āļ™āđ„āļ§āđ‰ āļ”āđ‰āļ§āļĒāļāļēāļĢāđ€āļ•āļīāļĄ /robots.txt āļŦāļĨāļąāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ (address) āļ™āļąāđ‰āļ™āđ€āļŠāđˆāļ™ https://www.wongnai.com/robots.txtāļ­āļĒāđˆāļēāļ‡āļˆāļēāļāļ āļēāļžāđ€āļ›āđ‡āļ™āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ Wongnai āļˆāļēāļāđƒāļ™āđ€āļ§āđ‡āļšāđāļŠāļ”āļ‡āļ–āļķāļ‡ āđ€āļĢāļēāļŦāđ‰āļēāļĄ (Disallow) āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ Users āļ­āļ­āļāļĄāļē

Introduce Developer-Tools

āļŦāļĨāļąāļ‡āļˆāļēāļāđ„āļ”āđ‰āļ•āļĢāļ§āļˆāđ€āļŠāđ‡āļ„āđāļĨāđ‰āļ§āđ€āļĢāļēāļĄāļēāļ—āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļąāļāļāļąāļš dev-tools āļāļąāļ™āļ„āļĢāļąāļš āđ‚āļ”āļĒ dev-tools āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđƒāļŦāđ‰āđ€āļĢāļēāļ”āļđāļ§āđˆāļēāļĄāļĩāļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ­āļĒāļļāđˆāđƒāļ™āđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™āđāļĨāļ°āļ„āļąāļ”āļāļĢāļ­āļ‡āļ§āđˆāļēāļˆāļ°āļ™āļģāļ­āļ°āđ„āļĢāļĄāļēāđƒāļŠāđ‰āđ„āļ”āđ‰āļšāđ‰āļēāļ‡āđāļĨāļ°āļ•āđ‰āļ­āļ‡āļ—āļģāļ­āļĒāđˆāļēāļ‡āđ„āļĢāļ–āļķāļ‡āļˆāļ°āļ™āļģāļ­āļ­āļāļĄāļēāđƒāļŠāđ‰āđ„āļ”āđ‰ āđ‚āļ”āļĒāļ§āļīāļ˜āļĩāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ™āļĩāđ‰āđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄ āđ€āļžāļĢāļēāļ°āļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™ Browser āļ—āļĩāđˆāļ—āļļāļāļ—āđˆāļēāļ™āđƒāļŠāđ‰āļ­āļĒāļļāđˆāđāļĨāđ‰āļ§ āļ­āļĒāđˆāļēāļ‡āļœāļĄāđƒāļŠāđ‰ Opera āļŦāļĢāļ·āļ­ Chrome āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ„āļ”āđ‰āđ‚āļ”āļĒāļāļ” Ctrl + Shift + I āļŦāļĢāļ·āļ­ āļāļ” F12 āļŦāļĢāļ·āļ­ Right click āđāļĨāđ‰āļ§āđ€āļĨāļ·āļ­āļ Inspect āļŦāļĢāļ·āļ­āļˆāļ°āļāļ”āļ—āļĩāđˆāļĄāļļāļĄāļ‹āđ‰āļēāļĒāļšāļ™āđ„āļ”āđ‰āđ€āļĨāļĒāļ„āļĢāļąāļš

How to select element in HTML document : CSS Selector

āđ€āļĢāļēāļˆāļ°āļĄāļēāđ€āļĢāļīāđˆāļĄāđāļ•āļ° coding āļāļąāļ™āđ€āļĨāļĒāļ™āļ°āļ„āļĢāļąāļš āļ āļēāļĐāļēāļ—āļĩāđˆāđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰āļ„āļ·āļ­ Python āđ‚āļ”āļĒāļĄāļĩ Library āļ­āļĒāļđāđˆāļ—āļĩāđˆāđ€āļĢāļēāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢ scrape web āļ„āļ·āļ­ BeautifulSoup , Selenium āđāļĨāļ° Scrapy āļ‹āļķāđˆāļ‡āļˆāļ°āļĄāļĩāļ‚āđ‰āļ­āļ”āļĩāđāļĨāļ°āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™ āđāļ•āđˆāđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļœāļĄāļˆāļ°āļžāļđāļ”āļ–āļķāļ‡āđ€āļ‰āļžāļēāļ° BeautifulSoup āđ€āļžāļĢāļēāļ°āļ„āđˆāļ­āļ™āļ‚āđ‰āļēāļ‡āļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļŦāļĄāļēāļ°āļāļąāļšāļœāļđāđ‰āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļĢāļąāļš āđ€āļĢāļēāļĄāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ scraping āļœāđˆāļēāļ™ library BeautifulSoup āļāļąāļ™āđ€āļĨāļĒ

Scrapy vs Selenium vs BeautifulSoup:

https://towardsdatascience.com/scrapy-vs-selenium-vs-beautiful-soup-for-web-scraping-24008b6c87b8

āļāđˆāļ­āļ™āļ­āļ·āđˆāļ™āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļ”āļķāļ‡ Library BeautifulSoup āļĄāļēāđƒāļŠāđ‰ āđ‚āļ”āļĒ BeautifulSoup āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨ āļ—āļĩāđˆāđ„āļ”āđ‰āļˆāļēāļāļāļēāļĢ request āļĄāļēāļ­āļĩāļāļ—āļĩ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ‡āđˆāļēāļĒāļ•āđˆāļ­āļāļēāļĢāļ„āđ‰āļ™āļŦāļēāđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļĢāļēāļ”āļķāļ‡āļĄāļēāļˆāļēāļāđƒāļ™āđ€āļ§āđ‡āļšāļ„āļĢāļąāļš

import bs4 ##āļ–āđ‰āļēāļĒāļąāļ‡āđ„āļĄāđˆāļĄāļĩāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļĨāļ‡āđ„āļ”āđ‰āđ‚āļ”āļĒ pip install bs4 

āđāļĨāļ°āđ€āļĢāļēāļāđ‡āļ”āļķāļ‡ Library request āļĄāļēāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ”āļķāļ‡āđ€āļ§āđ‡āļšāļ—āļĩāđˆāđ€āļĢāļēāļŠāļ™āđƒāļˆ āđ‚āļ”āļĒ requests āļˆāļ°āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļāļąāļš HTTP āļŦāļĢāļ·āļ­āļ•āļąāļ§āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļšāđ€āļĢāļēāļ™āļąāđ‰āļ™āđ€āļ­āļ‡

import requests ##āļĄāļĩ s āļĨāļ‡āļ—āđ‰āļēāļĒāļ”āđ‰āļ§āļĒ 
## āļ–āđ‰āļēāļĒāļąāļ‡āđ„āļĄāđˆāļĄāļĩāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļĨāļ‡āđ„āļ”āđ‰āđ‚āļ”āļĒ pip install requests

āļ—āļĩāļ™āļĩāđ‰āđ€āļĢāļēāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ€āļ§āđ‡āļšāļ—āļĩāđˆāđ€āļĢāļēāļŠāļ™āđƒāļˆāđ„āļ”āđ‰āđāļĨāđ‰āļ§ āđ‚āļ”āļĒāđƒāļŠāđ‰ requests.get(‘web link’)

r = requests.get(‘https://www.wongnai.com/restaurants/sushimasa’)

āđ€āļĢāļēāļĄāļēāđ€āļŠāđ‡āļ„āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™

r.text

āļ™āļĩāđˆāļ„āļ·āļ­āļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļĢāļēāđ„āļ”āđ‰āļˆāļēāļāļāļēāļĢ request āļ‹āļķāđˆāļ‡āļāđ‡āļ„āļ·āļ­ Source code āļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāđ€āļžāļˆāļ™āļąāđ‰āļ™āđāļŦāļĨāļ°āļ„āļĢāļąāļš āđāļ•āđˆāļĄāļąāļ™āļˆāļ°āđāļŠāļ”āļ‡āļœāļĨāđ‚āļ”āļĒāļāļēāļĢāļ™āļģāļĄāļēāļ•āđˆāļ­āļāļąāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđ€āļĨāļĒ āļ‹āļķāđˆāļ‡āļˆāļ°āļ—āļģāđƒāļŦāđ‰āļ”āļđāļĒāļēāļāļĄāļēāļāđ† āđāļ•āđˆāļĄāļĩāļ„āļģāļŠāļąāđˆāļ‡āļĄāļēāļŠāđˆāļ§āļĒāļ—āļģāđƒāļŦāđ‰āļ”āļđāļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™

āļ•āđˆāļ­āđ„āļ›āđ€āļĢāļēāļˆāļ°āļ™āļģāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļĢāļēāđ„āļ”āđ‰āļĄāļēāđāļ›āļĨāļ‡āđ€āļ›āđ‡āļ™ type bs4.BeautifulSoup āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡āļ‚āļ­āļ‡ BeautifulSoup āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđāļĨāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāđ„āļ”āđ‰āļ„āļĢāļąāļš

html_page = bs4.BeautifulSoup(r.text, ‘html.parser’)
print(html_page)
type(html_page)

āđ‚āļ”āļĒāđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđƒāļŦāđ‰ source āļ”āļđāđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āđ„āļ›āļ­āļĩāļāļ”āđ‰āļ§āļĒ .prettify()

print(html_page.prettify())

āļˆāļ°āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āļ§āđˆāļē āļāļēāļĢāđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡ prettify() āļ—āļģāđƒāļŦāđ‰ Source code āļ—āļĩāđˆāđ€āļĢāļēāđ„āļ”āđ‰āļĄāļēāļˆāļ°āļ–āļđāļāļˆāļąāļ”āļāļēāļĢāđƒāļŦāđ‰āļ­āļĒāļđāđˆāđƒāļ™āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ”āļđāļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āļĄāļēāļāđ† āļ‹āļķāđˆāļ‡āļˆāļ°āļ­āļĒāļđāđˆāđƒāļ™āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļ„āļĨāđ‰āļēāļĒāļāļąāļšāļāļēāļĢāļāļ” F12 āļ”āļđāđƒāļ™ web page āđ€āļĨāļĒāļ„āļĢāļąāļš

āđ€āļĢāļēāļĄāļēāđ€āļĢāļīāđˆāļĄāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļāļąāļ™ āđ‚āļ”āļĒāļˆāļ°āđƒāļŠāđ‰ CSS Selector āđƒāļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāļ™āļ°āļ„āļĢāļąāļš

CSS Selector reference:

https://www.w3schools.com/cssref/css_selectors.as

āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™āļœāļĄāļ­āļĒāļēāļāļˆāļ°āļ”āļķāļ‡ āļ›āļĢāļ°āđ€āļ āļ—āļĢāļēāļ„āļēāļ‚āļ­āļ‡āļĢāđ‰āļēāļ™āļ„āđ‰āļēāļ™āļĩāđ‰āļ­āļ­āļāļĄāļē āđ€āļĢāļēāļ•āđ‰āļ­āļ‡āđ€āļĢāļīāđˆāļĄāļ”āđ‰āļ§āļĒāļāļēāļĢāđ„āļ›āļ”āļđāļāđˆāļ­āļ™āļ§āđˆāļēāļ›āļĢāļ°āđ€āļ āļ—āļĢāļēāļ„āļēāļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆāļŠāđˆāļ§āļ™āđ„āļŦāļ™āļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™ āđāļĨāļ°āļ–āļđāļāļšāļĢāļĢāļˆāļļāļ­āļĒāļđāđˆāđƒāļ™āļ„āļĨāļēāļŠāļ­āļ°āđ„āļĢ āļĄāļēāđ€āļĢāļīāđˆāļĄāļāļąāļ™āđ€āļĨāļĒāļ”āļĩāļāļ§āđˆāļēāļāđˆāļ­āļ™āļˆāļ°āļ‡āļ‡ **āļ­āļĒāđˆāļēāļĨāļ·āļĄ ethics āļ”āđ‰āļ§āļĒāļ™āļ°āļ„āļĢāļąāļš āļ­āļĒāđˆāļēāļ‡āđƒāļ™ Wongnai not allow āđ€āļ‰āļžāļēāļ° users āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļ™āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡āļ›āļĢāļ°āđ€āļ āļ—āļĢāļēāļ„āļēāļ‚āļ­āļ‡āļĢāđ‰āļēāļ™āđ„āļ”āđ‰āļ„āļĢāļąāļš

āļ•āļĢāļ‡ span.sc-1ascgl-3.cbakhs āļ„āļ·āļ­ tag āļ‚āļ­āļ‡āļŠāđˆāļ§āļ‡āļĢāļēāļ„āļē āļ”āļąāļ‡āļ—āļĩāđˆāļāļĨāđˆāļēāļ§āđ„āļ§āđ‰āļ‚āđ‰āļēāļ‡āļ•āđ‰āļ™āļ§āđˆāļē Tag name āļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļĢāļ°āļšāļļāļĢāļđāļ›āđāļšāļšāļ„āļģāļŠāļąāđˆāļ‡ āļŦāļĢāļ·āļ­āļāļēāļĢāļĨāļ‡āļĢāļŦāļąāļŠāļ„āļģāļŠāļąāđˆāļ‡ āđ‚āļ”āļĒāļ•āļĢāļ‡āļ™āļĩāđ‰āđāļŦāļĨāļ°āļ„āļĢāļąāļšāļ—āļĩāđˆāļˆāļ°āđƒāļŠāđ‰ css selectors āļ”āļķāļ‡āļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢ āđ€āļĢāļēāļĄāļē coding āļāļąāļ™āļ•āđˆāļ­āļ„āļĢāļąāļš

selector = 'span._2qDKIyMmA-jMRyfxACZWt6'
price = html_page.select_one(selector)
price

āđ‚āļ”āļĒāđƒāļ™ BeautifulSoup āļ™āļąāđ‰āļ™āđ„āļ”āđ‰āļĄāļĩ function āļ—āļĩāđˆāļˆāļ°āļŠāļāļąāļ”āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļĢāļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ„āļ”āđ‰āļ—āļąāļ™āļ—āļĩ

price.text

āđāļ•āđˆāļ–āđ‰āļēāđ€āļĢāļēāđƒāļŠāđˆāļ‚āđ‰āļ­āļĄāļđāļĨāļœāļīāļ”āļˆāļ°āđāļŠāļ”āļ‡āļœāļĨāļ§āđˆāļē None āļˆāļēāļāļ āļēāļžāļ”āđ‰āļēāļ™āļšāļ™āļœāļĄāļˆāļ‡āđƒāļˆāļˆāļ°āļĨāļš 6 āđƒāļ™ class āļ­āļ­āļ āļžāļ­āļĄāļąāļ™āļŦāļē ‘span._2qDKIyMmA-jMRyfxACZWt’ āđƒāļ™āđ€āļ§āđ‡āļšāđāļ•āđˆāļŦāļēāđ„āļĄāđˆāđ€āļˆāļ­āđƒāļ™āđ€āļ§āđ‡āļšāđ€āļžāļĢāļēāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļĢāļēāđƒāļŠāđˆāļœāļīāļ” āđ„āļ”āđ‰āļœāļĨāļ—āļĩāđˆāļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™ None

āđ€āļĄāļ·āđˆāļ­āļŠāļāļąāļ”āđ€āļ­āļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļĄāļēāđ„āļ”āđ‰āđāļĨāđ‰āļ§ āļ„āļĢāļēāļ§āļ™āļĩāđ‰āđ€āļĢāļēāļĨāļ­āļ‡āļĄāļēāļŠāļāļąāļ”āļĢāļđāļ›āļāļąāļ™āļšāđ‰āļēāļ‡āļ„āļĢāļąāļšāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ āļēāļžāļ—āļĩāđˆāđ€āļĢāļēāļˆāļ°āļ”āļķāļ‡āļĨāļīāļ‡āļ„āđŒāļ­āļ­āļāļĄāļē āđ€āļ›āđ‡āļ™āļ āļēāļžāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļĄāļēāļ—āļģāļāļēāļĢāļĢāļĩāļ§āļīāļ§āļĢāđ‰āļēāļ™āļ™āļĩāđ‰āļ™āļ°āļ„āļĢāļąāļš

picture_selector = 'img.ogo0re-0.llQZZn.w0wgso-15.hgqWqI'
pic = html_page.select(picture_selector)
pic

āļˆāļēāļāļ—āļĩāđˆāļ”āļķāļ‡āļĄāļēāļˆāļ°āļĄāļĩ 9 img tag āļ”āļąāļ‡āļ›āļĢāļēāļāļāļ āļēāļž 9 āļ āļēāļžāđƒāļ™āļŦāļ™āđ‰āļēāđ€āļ§āđ‡āļšāļ™āļąāđ‰āļ™ āđāļĨāđ‰āļ§āđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļ‚āļ­āļ‡ BeautifulSoup āđƒāļ™āļāļēāļĢāļŠāļāļąāļ”āđ€āļ­āļēāļĨāļīāļ‡āļ„āđŒāļ­āļ­āļāļĄāļēāļ™āļ°āļ„āļĢāļąāļš

for image in pic:print(image[‘src’]) #src = source

āđ€āļ›āđ‡āļ™āđ„āļ‡āļšāđ‰āļēāļ‡āļ„āļĢāļąāļš āļžāļ­āļˆāļ°āļ—āļģāļ•āļēāļĄāļāļąāļ™āđ„āļ”āđ‰āđ„āļŦāļĄāļ„āļĢāļąāļš āļ‹āļķāđˆāļ‡āđ€āļˆāđ‰āļē Web-scraping āļ—āļĩāđˆāđ„āļ”āđ‰āđ€āļĢāļĩāļĒāļ™āļˆāļēāļ data science school by Botnoi āļˆāļ°āļ­āļĒāļđāđˆāđƒāļ™āļ‚āļ­āļšāđ€āļ‚āļ• data extraction āđ€āļ›āđ‡āļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĢāļ·āļ­āļĢāļ§āļšāļĢāļ§āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ—āļĩāđˆāļ•āđˆāļēāļ‡āđ†āļāđˆāļ­āļ™āļ—āļĩāđˆāļˆāļ°āļ™āļģāļĄāļēāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ•āđˆāļ­āđ„āļ› āļ‹āļķāđˆāļ‡āļāļēāļĢāļ—āļĩāđˆāđ€āļĢāļēāđ€āļ‚āđ‰āļēāđƒāļˆāđƒāļ™āļ”āđ‰āļēāļ™āļ™āļĩāđ‰āđ„āļ”āđ‰āļĄāļēāļāļ‚āļķāđ‰āļ™ āļˆāļ°āļŠāđˆāļ§āļĒāļ—āļģāđƒāļŦāđ‰āđ€āļ§āļĨāļēāđ€āļĢāļēāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļĄāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļ”āđ‰āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄ clean āļĄāļēāļāļ‚āļķāđ‰āļ™āđāļĨāļ°āļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĄāļēāļāļ‚āļķāđ‰āļ™āļ„āļĢāļąāļš āļŦāļ§āļąāļ‡āļ§āđˆāļēāļ—āļļāļāļ„āļ™āļˆāļ°āđ€āļ‚āđ‰āļēāđƒāļˆāļ™āļ°āļ„āļĢāļąāļšāđ„āļ§āđ‰āļ–āđ‰āļēāļĒāļąāļ‡āđ„āļ‡āđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ•āđˆāļ­āđ„āļ›āļœāļĄāđ„āļ”āđ‰āļ•āļąāđ‰āļ‡āđ‚āļ›āļĢāđ€āļˆāđ‡āļ„āđ„āļ§āđ‰āļāļąāļš Tamagotchi āđ‚āļ”āļĒāļˆāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāđˆāļ§āļ‡āļĢāļēāļ„āļēāđāļĨāļ°āļ•āļģāđāļŦāļ™āđˆāļ‡āļ—āļĩāđˆāļ•āļąāđ‰āļ‡āļ‚āļ­āļ‡āļĢāđ‰āļēāļ™āļ­āļēāļŦāļēāļĢāđƒāļ™āđ€āļ‚āļ•āļāļĢāļļāļ‡āđ€āļ—āļžāđāļĨāļ°āļ›āļĢāļīāļĄāļ“āļ‘āļĨāđ€āļžāļ·āđˆāļ­āļˆāļ°āļ™āļģāļĄāļē visualize āļŦāļēāļ„āļ§āļēāļĄāļŦāļ™āļēāđāļ™āđˆāļ™āļ‚āļ­āļ‡āļĢāđ‰āļēāļ™āđƒāļ™āļŠāđˆāļ§āļ‡āļĢāļēāļ„āļēāļ•āđˆāļēāļ‡āđ† āļāļēāļāļ•āļīāļ”āļ•āļēāļĄāļāļąāļ™āļ”āđ‰āļ§āļĒāļ™āļ°āļ„āļĢāļąāļš

āļ‚āļ­āļšāļ„āļļāļ“āļžāļĩāđˆāļāđ‡āļ­āļ• Tamagotchi āđāļĨāļ°āļžāļĩāđˆāļ§āļīāļ™ Dr. Winn Voravuthikunchai āļŠāļģāļŦāļĢāļąāļšāļ„āļģāđāļ™āļ°āļ™āļģāļ”āđ‰āļ§āļĒāļ„āļĢāļąāļš

Reference : https://medium.com/botnoi-classroom

Last updated