เฉลยแบบฝึกหัด#
import requests
from bs4 import BeautifulSoup
url = 'https://thestandard.co/category/news/lgbtqia/'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
a_tags = soup.select('div.newsbox-archive h3.news-title a')
links = [a.attrs['href'] for a in a_tags]
links
['https://thestandard.co/onelove-captain-armband/',
 'https://thestandard.co/iker-casillas-lgbtq-joke/',
 'https://thestandard.co/iker-casillas-lgbtq/',
 'https://thestandard.co/cuba-family-law-marriage-equality-referendum/',
 'https://thestandard.co/naruemit-pride-wedding/',
 'https://thestandard.co/lgbtq-same-sex-marriage-act/',
 'https://thestandard.co/singapore-prohibit-377a/',
 'https://thestandard.co/committee-approve-draft-law-on-equal-marriage-and-marriage/',
 'https://thestandard.co/ukraine-to-consider-equal-marriage-law/',
 'https://thestandard.co/thanikan-pornpongsaroj-090765/']
def scrape_article(url):
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')
    d_list = soup.select('div.entry-content')
    t = d_list[0].text
    header = soup.select('div.entry-title h1.title')
    return {'news category': 'lgbtq+', 'header': header[0].text, 'article':t, 'url':url}
import pandas as pd
info_dicts = []
for url in links:
    info_dict = scrape_article(url)
    info_dicts.append(info_dict)
df = pd.DataFrame([scrape_article(url) for url in links])
df
| news category | header | article | url | |
|---|---|---|---|---|
| 0 | lgbtq+ | ปลอกแขน ‘One Love’ ตัวแทนความรักที่กัปตัน 8 ที... | \nท่ามกลางเรื่องราวมากมายหลากหลายคำถามเกี่ยวกั... | https://thestandard.co/onelove-captain-armband/ | 
| 1 | lgbtq+ | การล้อเล่นของ อิเกร์ กาซิยัส ที่ไม่ตลกเลยสำหรั... | \nเมื่อวันอาทิตย์ที่ผ่านมา (9 ตุลาคม) เกิดกระแ... | https://thestandard.co/iker-casillas-lgbtq-joke/ | 
| 2 | lgbtq+ | อิเกร์ กาซิยัส เปิดตัวเป็นเกย์ วอนทุกคนเคารพใน... | \nอิเกร์ กาซิยัส อดีตผู้รักษาประตูระดับตำนานที... | https://thestandard.co/iker-casillas-lgbtq/ | 
| 3 | lgbtq+ | ถอดบทเรียนความสำเร็จ คิวบาลงประชามติเห็นชอบแก้... | \nนับเป็นช่วงเวลาประวัติศาสตร์ครั้งสำคัญของชุม... | https://thestandard.co/cuba-family-law-marriag... | 
| 4 | lgbtq+ | กลุ่มนฤมิตไพรด์เตรียมจัด ‘นฤมิตวิวาห์’ งานสมรส... | \nวันนี้ (15 กันยายน) กลุ่มนฤมิตไพรด์ แถลงข่าว... | https://thestandard.co/naruemit-pride-wedding/ | 
| 5 | lgbtq+ | ภาคีสีรุ้งฯ ยื่นหนังสือเร่งให้ กมธ. ผลักดัน พ.... | \nวันนี้ (8 กันยายน) ที่อาคารรัฐสภา วาดดาว-ชุม... | https://thestandard.co/lgbtq-same-sex-marriage... | 
| 6 | lgbtq+ | สิงคโปร์เตรียมยกเลิกกฎหมายยุคอาณานิคม ที่กำหนด... | \nวานนี้ (21 สิงหาคม) นายกรัฐมนตรีลีเซียนลุงขอ... | https://thestandard.co/singapore-prohibit-377a/ | 
| 7 | lgbtq+ | กมธ. เคาะกฎหมายคู่ชีวิตและสมรสเท่าเทียม จดทะเบ... | \nวันนี้ (27 กรกฎาคม) ธณิกานต์ พรพงษาโรจน์ และ... | https://thestandard.co/committee-approve-draft... | 
| 8 | lgbtq+ | ยูเครนเตรียมพิจารณาร่างกฎหมายสมรสเท่าเทียม ท่า... | \nเมื่อช่วงกลางสัปดาห์ที่ผ่านมา กลุ่มนักเคลื่อ... | https://thestandard.co/ukraine-to-consider-equ... | 
| 9 | lgbtq+ | ธณิกานต์ โฆษก กมธ.กฎหมายคู่ชีวิต ยืนยันสมรสเท่... | \nวันนี้ (9 กรกฎาคม) ธณิกานต์ พรพงษาโรจน์ สมาช... | https://thestandard.co/thanikan-pornpongsaroj-... | 
import pythainlp
df['word count'] = df['article'].apply(pythainlp.word_tokenize).apply(len)
df
| news category | header | article | url | word count | |
|---|---|---|---|---|---|
| 0 | lgbtq+ | ปลอกแขน ‘One Love’ ตัวแทนความรักที่กัปตัน 8 ที... | \nท่ามกลางเรื่องราวมากมายหลากหลายคำถามเกี่ยวกั... | https://thestandard.co/onelove-captain-armband/ | 766 | 
| 1 | lgbtq+ | การล้อเล่นของ อิเกร์ กาซิยัส ที่ไม่ตลกเลยสำหรั... | \nเมื่อวันอาทิตย์ที่ผ่านมา (9 ตุลาคม) เกิดกระแ... | https://thestandard.co/iker-casillas-lgbtq-joke/ | 1629 | 
| 2 | lgbtq+ | อิเกร์ กาซิยัส เปิดตัวเป็นเกย์ วอนทุกคนเคารพใน... | \nอิเกร์ กาซิยัส อดีตผู้รักษาประตูระดับตำนานที... | https://thestandard.co/iker-casillas-lgbtq/ | 322 | 
| 3 | lgbtq+ | ถอดบทเรียนความสำเร็จ คิวบาลงประชามติเห็นชอบแก้... | \nนับเป็นช่วงเวลาประวัติศาสตร์ครั้งสำคัญของชุม... | https://thestandard.co/cuba-family-law-marriag... | 1702 | 
| 4 | lgbtq+ | กลุ่มนฤมิตไพรด์เตรียมจัด ‘นฤมิตวิวาห์’ งานสมรส... | \nวันนี้ (15 กันยายน) กลุ่มนฤมิตไพรด์ แถลงข่าว... | https://thestandard.co/naruemit-pride-wedding/ | 521 | 
| 5 | lgbtq+ | ภาคีสีรุ้งฯ ยื่นหนังสือเร่งให้ กมธ. ผลักดัน พ.... | \nวันนี้ (8 กันยายน) ที่อาคารรัฐสภา วาดดาว-ชุม... | https://thestandard.co/lgbtq-same-sex-marriage... | 381 | 
| 6 | lgbtq+ | สิงคโปร์เตรียมยกเลิกกฎหมายยุคอาณานิคม ที่กำหนด... | \nวานนี้ (21 สิงหาคม) นายกรัฐมนตรีลีเซียนลุงขอ... | https://thestandard.co/singapore-prohibit-377a/ | 624 | 
| 7 | lgbtq+ | กมธ. เคาะกฎหมายคู่ชีวิตและสมรสเท่าเทียม จดทะเบ... | \nวันนี้ (27 กรกฎาคม) ธณิกานต์ พรพงษาโรจน์ และ... | https://thestandard.co/committee-approve-draft... | 219 | 
| 8 | lgbtq+ | ยูเครนเตรียมพิจารณาร่างกฎหมายสมรสเท่าเทียม ท่า... | \nเมื่อช่วงกลางสัปดาห์ที่ผ่านมา กลุ่มนักเคลื่อ... | https://thestandard.co/ukraine-to-consider-equ... | 465 | 
| 9 | lgbtq+ | ธณิกานต์ โฆษก กมธ.กฎหมายคู่ชีวิต ยืนยันสมรสเท่... | \nวันนี้ (9 กรกฎาคม) ธณิกานต์ พรพงษาโรจน์ สมาช... | https://thestandard.co/thanikan-pornpongsaroj-... | 396 | 
df['word count'].describe()
count      10.000000
mean      702.500000
std       530.492696
min       219.000000
25%       384.750000
50%       493.000000
75%       730.500000
max      1702.000000
Name: word count, dtype: float64
df.to_csv('news_data.csv')