Web scraping [Python] by 바죠

웹상에 존재하는 데이터들이 많이 있다. 전공을 불문하고 매우 많은 자료들이 무료로 공급되는 것이 현실이다.
이들 자료를 자신의 컴퓨터로 가져와서 그림을 그리는 것을 상상할 수 있다. 
이러한 일들을 지원하는 파이썬 모듈이 있다.  아래의 예를 보자. 
https://en.wikipedia.org/wiki/Beautiful_Soup_(HTML_parser)



그림은 matplotlib를 활용하여 쉽게 그릴 수 있을 것이다.

-------------------------------------------------------------------------------------------------------------------


# print the first 500 characters of the HTML
print(r.text[0:500]) 


from bs4 import BeautifulSoup 
soup = BeautifulSoup(r.text, 'html.parser')


results = soup.find_all('span', attrs={'class':'short-desc'}) 

len(results) 

-------------------------------------------------------------------------------------------------------------------

import requests 
r = requests.get('https://www.nytimes.com/interactive/2017/06/23/opinion/trumps-lies.html')

from bs4 import BeautifulSoup 
soup = BeautifulSoup(r.text, 'html.parser') 
results = soup.find_all('span', attrs={'class':'short-desc'})

records = [] 
for result in results: 
    date = result.find('strong').text[0:-1] + ', 2017'
    lie = result.contents[1][1:-2]
    explanation = result.find('a').text[1:-1]
    url = result.find('a')['href']
    records.append((date, lie, explanation, url))

import pandas as pd 
df = pd.DataFrame(records, columns=['date', 'lie', 'explanation', 'url']) 
df['date'] = pd.to_datetime(df['date']) 
df.to_csv('trump_lies.csv', index=False, encoding='utf-8')

-------------------------------------------------------------------------------------------------------------------


>>> raw_html = simple_get('http://www.fabpedigree.com/james/mathmen.htm')
>>> html = BeautifulSoup(raw_html, 'html.parser')
>>> for i, li in enumerate(html.select('li')):
print(i, li.text)

0 Isaac Newton
Archimedes
Carl F. Gauss
Leonhard Euler
Bernhard Riemann

1 Archimedes
Carl F. Gauss
Leonhard Euler
Bernhard Riemann

2 Carl F. Gauss
Leonhard Euler
Bernhard Riemann

3 Leonhard Euler
Bernhard Riemann

4 Bernhard Riemann

# 5 ... and many more...

-------------------------------------------------------------------------------------------------------------------






핑백

덧글

댓글 입력 영역

최근 포토로그