Skip to content

ทำ Web Scraping ด้วยภาษา Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้จะพาผู้อ่านไปแนะนำการทำ web scraping ด้วยภาษา Python กันครับ

Web Scraping คืออะไร?
Web Scraping เป็นระบบที่ดึงข้อมูลจากเว็บเพจส่วนที่ต้องการมาเรียกใช้งาน


เราสามารถทำ Web Scraping ด้วยภาษา Python โดยใช้ Lxml +  requests ครับ

อ่านวิธีติดตั้ง Lxml ได้ที่ Python xml

โมดูล requests

requests เป็นโมดูลสำหรับงาน requests  กับ HTTP โดยโมดูลนี้ถูกออกแบบให้ใช้งานได้กับมนุษย์ โดยหน้าที่คล้าย ๆ กับไลบรารี urllib ของ Python แต่ใช้งานได้สะดวกและง่ายกว่าครับ ใช้ License: Apache 2.0 รองรับทั้ง Python 2 และ 3 สามารถติดตั้งได้โดยใช้คำสั่ง pip:

pip install requests

หรือโหลดไฟล์บีบอัดจาก PyPI แตกไฟล์แล้วใช้คำสั่ง:

python setup.py install

ตัวอย่างการใช้งานโมดูล requests

>>> import requests
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

อ่านเอกสารการใช้งานโมดูล requests ได้ที่ http://docs.python-requests.org/en/latest/


เรามาลงมือทำ Web Scraping ด้วยภาษา Python กันครับ
ตอนแรกเรียกใช้งานโมดูล lxml กับ requests ก่อนครับ

>>> from lxml import html
>>> import requests

ต่อไป ผมจะใช้โมดูล requests ดึงข้อมูลมาจากบล็อกผมเอง python3.wannaphong.com

>>> page = requests.get('https://python3.wannaphong.com')
>>> tree = html.fromstring(page.text) #เก็บค่าเอาไว้ในรูปแบบ html

ผมต้องการดึงข้อมูล ชื่อบทความในหน้าหลัก ผมใช้ Opera เปิดโหมดนักพัฒนาขึ้นมา (สามารถใช้ web browser ไหนก็ได้ครับ แต่ควรเป็น web browser ที่มีโหมดนักพัฒนาครับ)

ทำ Web Scraping ด้วย Python

ผมลากตรงหัวข้อแล้วเปิดโหมดเรียกดูตรวจสอบองค์ประกอบโค้ดขึ้นมา จะเห็นได้ว่า ตรงชื่อบทความจะมีโค้ด html เป็น

<a href="..." rel="bookmark">ชื่อบทความ</a>

เนื่องจากในบล็อกผมมีลิงค์หลายลิงค์ ทำให้อ้างอิงแค่ <a> ไม่ได้ จึงต้องกำหนดคุณสมบัติของแท็กที่ต้องการดึงข้อมูล ผมอาศัยโค้ด rel="bookmark" จาก <a>  อ้างอิงชื่อบทความครับ ทำให้เขียน xpath ได้ดังนี้ //a[@rel="bookmark"]/
เรามาดึงข้อมูลส่วนที่ต้องการกันครับ

>>> q = tree.xpath('//a[@rel="bookmark"]/text()') #เติม text() เข้าไปเพื่อดึงข้อความ
>>> print("บทความ : ",q) #ข้อมูลจะออกมาเป็น list
บทความ :  ['สร้างกราฟเส้นบน Python ด้วย matplotlib', 'สร้างกราฟด้วยโมดูล pyqtgraph', 'รับส่งข้อมูล json ผ่านเครือข่ายด้วย http.server', 'Python XML', 'Python กับ JSON', 'ปรึกษา ขอคำแนะนำ แก้ไขปัญหา Python ถามที่ไหนดี', 'urllib เข้าถึงอินเทอร์เน็ตใน Python 3']

ติดตามบทความต่อไปนะครับ
ขอบคุณครับที่ติดตามมาโดยตลอดครับ ครบรอบ 200 บทความของบล็อกสอน Python 3 ภาษาไทย 😀
ขอบคุณมาก ๆ ครับ 😀

Published on Categories web-developer, web-frameworkTags

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

2 thoughts on “ทำ Web Scraping ด้วยภาษา Python

  1. skyandsea

    ลองทำบน canopy แต่โปรแกรมไม่อ่านภาษาไทยค่ะ ขึ้นเป็น unicode ที่อ่านไม่รู้เรื่อง

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *