Pada lesson web scrapping consumer report, program akan mengumpulkan data dari consumerreport.org. Informasi yang akan diambil adalah product category.
Untuk melakukan scraping bisa lakukan secara online, artinya program mengakses page dan langsung melakukan scraping.
Pada lesson ini dilakukan pendekatan offline, dimana isi halaman web akan didownload dan disimpan sebagai file text di local storage. Berikut programnya.
from urllib.request import urlopen
html = urlopen("http://www.consumerreports.org/cro/a-to-z-index/products/index.htm")
page_content = html.read()
with open('consumers.html', 'wb') as fid:
fid.write(page_content)
PERHATIAN Karena desain dari consumerreport.org sudah berubah, program dibawah tidak akan berjalan baik. Program dibawah dibuat masih dengan desain lama. Jika ingin mencoba, silakan download file consumerreport.org yang kami save sebelum perubahan. Download disini.
from bs4 import BeautifulSoup
import os
def read_file():
current_path = os.path.dirname(os.path.abspath(__file__))
file = open(current_path + r'\consumer-reports.txt')
data = file.read()
file.close()
return data
soup = BeautifulSoup(read_file(),'lxml')
target_element = soup.find_all('div',class_='entry-letter')
products = {} # product name - key product link - value
products = {div.div.a.span.string:div.div.a['href'] for div in target_element}
for key,value in products.items():
print(key , ' -->',value)
Berikut hasil scraping dari program diatas (return dari program kami potong untuk simplisitas)
Air conditioners --> http://www.consumerreports.org/cro/air-conditioners.htm Air purifiers --> http://www.consumerreports.org/cro/air-purifiers.htm Airline travel --> http://www.consumerreports.org/cro/airline-travel.htm ..... ..... ..... ..... ..... Wireless speakers --> http://www.consumerreports.org/cro/wireless-speakers.htm Wood stains --> http://www.consumerreports.org/cro/wood-stains.htm Yogurt --> http://www.consumerreports.org/cro/yogurt.htm