เฉลยแบบฝึกหัด#
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')