เฉลยแบบฝึกหัด#

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')