Bocah Tua Nakal
Bocah Tua Nakal

Reputation: 97

Bs4 scrape table specifik

I hope you guys are always healthy

I want to scrape a more specific table using BS4. this is my code:

from bs4 import BeautifulSoup
import requests


url = 'test.com'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')

for row in soup.select('tbody tr'):
    row_text = [x.text for x in row.find_all('td')]
    print (row_text)

how do you get results like this:

    Number, Name, address, telp, komoditi
1, "ABON JUARA" JUARA FOOD INDUSTRY, Jl. Jend Sudirman 339, Salatiga, Jawa Tengah, 0298-324060, Abon Sapi Dan Ayam

and saved in CSV

Upvotes: 0

Views: 70

Answers (1)

import requests
from bs4 import BeautifulSoup
import csv


def main(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    target = soup.select_one("table#newspaper-a").select("tr[valign=top]")
    with open("data.csv", 'w', newline="") as f:
        writer = csv.writer(f)
        writer.writerow(["No", "Name", "Address", "Tel", "Komoditi"])
        for item in target:
            item = list(item.stripped_strings)
            item[3] = item[3][6:]
            writer.writerow(item)


main("https://kemenperin.go.id/direktori-perusahaan?what=&prov=&hal=1")

Output: view-online

enter image description here

Upvotes: 2

Related Questions