Web Scraping - Consumer Report - Latihan 1


Pada catatan ini kita akan mencoba membuat program untuk scraping web consumerreport.org. Yang akan kita scrap adalah product category.

Untuk melakukan scraping bisa lakukan secara online, artinya program mengakses page dan langsung melakukan scraping.

Pada latihan ini pendekatan offline, download dahulu page ke lokal storage dan disimpan sebagai file txt.


import requests
from fake_useragent import UserAgent


url = 'http://www.consumerreports.org/cro/a-to-z-index/products/index.htm'
file_name = 'consumer_reports.txt'              # output file name

user_agent = UserAgent()

page = requests.get(url,headers={'user-agent':user_agent.chrome})
with open(file_name,'w') as file:
    file.write(page.content.decode('utf-8')) if type(page.content) == bytes else file.write(page.content)


Setalah kita simpan ke lokal, kita buat program terpisah untuk open file tersebut lalu melakukan scraping data.

Struktur html dari consumerreport.org sudah berubah, berikut saya include file html saat membuat program ini. https://drive.google.com/open?id=1F9pVbmgRbxGCBTLBfGGhmH1SlynQE_lQ


Untuk mendapatkan nama produk, kita gunakan list comprehension dengan membaca isi div.div.a.span.string

product_names = [div.div.a.span.string for div in target_element]


Untuk mendapatkan link,  kita baca isi dari div.div.a['href']

product_links = [div.div.a['href'] for div in target_element]


Bila kita ingin membuat dictionary dengan isi key adalah nama produk, dan value adalah link div.div.a.span.string:div.div.a['href']

products = {div.div.a.span.string:div.div.a['href'] for div in target_element}



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


product_names = [div.div.a.span.string for div in ]

product_links = [div.div.a['href'] for div in target_element]

products = {div.div.a.span.string:div.div.a['href'] for div in target_element}

for key,value in products.items():
    print(key , '   -->',value)


Perhatian
Ada perubahan dari web consumerreport.org , Script python yang dibuat disini tidak akan berjalan karena perbedaan struktur html.
Web Scraping - Consumer Report - Latihan 1 Web Scraping - Consumer Report - Latihan 1 Reviewed by noname needed on May 25, 2018 Rating: 5

No comments:

Powered by Blogger.