Python Kodu Fix

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    matr0x bunu yazdı
    garga bunu yazdı

    hocam tek yapacagin, statereport folderindeki state_report.py dosyasini editlemek. 12. satir. aha burasi yani: https://github.com/iKlotho/statereports/blob/master/statereport/state_report.py#L12 

    bunu degistirip:

    self.raw_data_url= f"https://www.ic3.gov/media/annualreport/{year}State/stats?s="


    boyle yap:

    self.raw_data_url= f"https://www.ic3.gov/AnnualReport/Reports/{year}State/stats?s="

     

    "fakat linkleri kodun icerisinde duzeltince yine calismiyor." demissin ama bana gayette calisiyor :D

    Oncelikle 

    git clone https://github.com/iKlotho/statereports

    bu kod ile clonlama yapiyorum. Daha sonra indirilen klasore girip statereport folderindeki state_report.py dosyasinda 12. satiri editliyorum.

    sonra terminalden ilgili klasore geliyorum.

    cd statereports

    hemen sonrasinda asagidaki kodu yaziyorum fakat ekteki hatayi aliyorum.

     

     

     

    hocam simdi baktim, ben hata almiyorum, ve hatayi tekrar yaratamadim. ama @wert in dedigi gibi senin outputa bakarsak aslinda hersey yolunda ama dosyayi kaydederken hata veriyor gibi gibi.

    bende baktim aynen @wert in dedigi gibi artik save fonksyonu yok close kullanin demisler...

    Dolayisi ile 67inci satirdaki: https://github.com/iKlotho/statereports/blob/master/statereport/state_report.py#L67 

    writer.save() olayini. writer.close() yaptim, denedim. yine sorunsuz calisiyor bende, dosyayi yaratiyor, dosyada sorun yok, vs.

    sende dene bakalim.

     

    garga tarafından 22/Nis/25 23:18 tarihinde düzenlenmiştir

    anca gidersin...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sqlmappentester
    sqlmappentester's avatar
    Kayıt Tarihi: 27/Temmuz/2024
    Erkek
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...


    anca gidersin...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...

     

    130. Satır da "descripti State Reports" felan diyor... descripti diye bişey mi var ? description felan olması lazım gibi. Yanlış mı biliyom ben ?

    Bide turkce karakterler ve ünlem üç nokta falan hepsi bende hata verdi bilmiyorum neden... Temizledim temizledim derken descripti de patladım :D biraktim sonra.

    garga tarafından 23/Nis/25 01:07 tarihinde düzenlenmiştir

    anca gidersin...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek
    garga bunu yazdı
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...

     

    130. Satır da "descripti State Reports" felan diyor... descripti diye bişey mi var ? description felan olması lazım gibi. Yanlış mı biliyom ben ?

    Bide turkce karakterler ve ünlem üç nokta falan hepsi bende hata verdi bilmiyorum neden... Temizledim temizledim derken descripti de patladım :D biraktim sonra.

    https://streamable.com/gqapib

    bi sorun yok 

    https://prnt.sc/jYEVdAjD3DsW

     

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    garga
    garga's avatar
    Kayıt Tarihi: 29/Temmuz/2002
    Erkek
    cybermole bunu yazdı
    garga bunu yazdı
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...

     

    130. Satır da "descripti State Reports" felan diyor... descripti diye bişey mi var ? description felan olması lazım gibi. Yanlış mı biliyom ben ?

    Bide turkce karakterler ve ünlem üç nokta falan hepsi bende hata verdi bilmiyorum neden... Temizledim temizledim derken descripti de patladım :D biraktim sonra.

    https://streamable.com/gqapib

    bi sorun yok 

    https://prnt.sc/jYEVdAjD3DsW

     

    Verdiğin linkteki (pastebin) kodun bu olduğundan eminmisin c/p yaparken bir sorun mu oldu noldu ben anlamadım simdi....


    anca gidersin...
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    matr0x
    matr0x's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek
    garga bunu yazdı
    matr0x bunu yazdı
    garga bunu yazdı

    hocam tek yapacagin, statereport folderindeki state_report.py dosyasini editlemek. 12. satir. aha burasi yani: https://github.com/iKlotho/statereports/blob/master/statereport/state_report.py#L12 

    bunu degistirip:

    self.raw_data_url= f"https://www.ic3.gov/media/annualreport/{year}State/stats?s="


    boyle yap:

    self.raw_data_url= f"https://www.ic3.gov/AnnualReport/Reports/{year}State/stats?s="

     

    "fakat linkleri kodun icerisinde duzeltince yine calismiyor." demissin ama bana gayette calisiyor :D

    Oncelikle 

    git clone https://github.com/iKlotho/statereports

    bu kod ile clonlama yapiyorum. Daha sonra indirilen klasore girip statereport folderindeki state_report.py dosyasinda 12. satiri editliyorum.

    sonra terminalden ilgili klasore geliyorum.

    cd statereports

    hemen sonrasinda asagidaki kodu yaziyorum fakat ekteki hatayi aliyorum.

     

     

     

    hocam simdi baktim, ben hata almiyorum, ve hatayi tekrar yaratamadim. ama @wert in dedigi gibi senin outputa bakarsak aslinda hersey yolunda ama dosyayi kaydederken hata veriyor gibi gibi.

    bende baktim aynen @wert in dedigi gibi artik save fonksyonu yok close kullanin demisler...

    Dolayisi ile 67inci satirdaki: https://github.com/iKlotho/statereports/blob/master/statereport/state_report.py#L67 

    writer.save() olayini. writer.close() yaptim, denedim. yine sorunsuz calisiyor bende, dosyayi yaratiyor, dosyada sorun yok, vs.

    sende dene bakalim.

     

    Cok tesekkur ederim. Simdi calisti.
    Ama buyuk bir hayal kirikligina ugradim. Verileri dogru cekmiyor.
    Mesela bu (https://www.ic3.gov/AnnualReport/Reports/2022State/#?s=6) linkten 2022 yili icin California eyaletinin verilerine baktigimizda, ilk tabloda yani victim count olarak Malware crime type degeri 246 olmasi gerekirken indirilen excel dosyasinda 2041 olarak aliyor.

    Diger yillara ve eyaletlere de baktigimda verileri dogru cekmedigini fark ettim. Sizce bunun sebebi ne olabilir ve duzeltme imkanimiz var mi?


    Tanrının bana baş edemeyeceğim bir şey vermeyeceğini biliyorum. Sadece keşke bana bu kadar güvenmeseydi diyorum...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    matr0x
    matr0x's avatar
    Kayıt Tarihi: 16/Haziran/2010
    Erkek
    cybermole bunu yazdı
    garga bunu yazdı
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...

     

    130. Satır da "descripti State Reports" felan diyor... descripti diye bişey mi var ? description felan olması lazım gibi. Yanlış mı biliyom ben ?

    Bide turkce karakterler ve ünlem üç nokta falan hepsi bende hata verdi bilmiyorum neden... Temizledim temizledim derken descripti de patladım :D biraktim sonra.

    https://streamable.com/gqapib

    bi sorun yok 

    https://prnt.sc/jYEVdAjD3DsW

     

    bugun bunu deneyecegim. digeri ile cekilen veriler dogru gelmmiyor. cok tesekkurler.


    Tanrının bana baş edemeyeceğim bir şey vermeyeceğini biliyorum. Sadece keşke bana bu kadar güvenmeseydi diyorum...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cybermole
    cybermole's avatar
    Kayıt Tarihi: 29/Mart/2016
    Erkek
    garga bunu yazdı
    cybermole bunu yazdı
    garga bunu yazdı
    cybermole bunu yazdı
    sqlmappentester bunu yazdı
    cybermole bunu yazdı

    https://pastebin.pl/view/3d9640bd

    py test.py -y 2023 # her eyalet ayrı sheet, XLSX

    py test.py -y 2023 -s f # hepsi tek sheet, XLSX

    py test.py -y 2023 -t csv # hepsi tek dosya, CSV

     

    --------- kurulacak kutuphaneler

     

    python -m pip install --upgrade pip

    python -m pip install selenium

    python -m pip install webdriver-manager

    python -m pip install requests

    python -m pip install beautifulsoup4

    python -m pip install pandas

    python -m pip install lxml

    python -m pip install html5lib

    python -m pip install XlsxWriter





    işine yararmı bilmiyorum denersin 

    Termux mu

    python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun

    Abi ben denedimde kodda hata var sanki ? O yuzden bıraktım öyle...

     

    130. Satır da "descripti State Reports" felan diyor... descripti diye bişey mi var ? description felan olması lazım gibi. Yanlış mı biliyom ben ?

    Bide turkce karakterler ve ünlem üç nokta falan hepsi bende hata verdi bilmiyorum neden... Temizledim temizledim derken descripti de patladım :D biraktim sonra.

    https://streamable.com/gqapib

    bi sorun yok 

    https://prnt.sc/jYEVdAjD3DsW

     

    Verdiğin linkteki (pastebin) kodun bu olduğundan eminmisin c/p yaparken bir sorun mu oldu noldu ben anlamadım simdi....

    import argparse
    import datetime
    import sys
    import time
    import io
    
    import pandas as pd
    import requests
    from bs4 import BeautifulSoup
    
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import Select, WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from webdriver_manager.chrome import ChromeDriverManager
    
    def get_available_years() -> list:
        url = "https://www.ic3.gov/AnnualReport/Reports"
        try:
            r = requests.get(url)
            r.raise_for_status()
        except requests.RequestException as e:
            print(f"‼ Yılları çekerken hata: {e}")
            sys.exit(1)
    
        soup = BeautifulSoup(r.text, "html.parser")
        years = []
        for a in soup.find_all("a"):
            txt = a.get_text().strip()
            if txt.endswith("State Reports"):
                year = txt.split()[0]
                if year.isdigit():
                    years.append(year)
        return sorted(set(years), reverse=True)
    
    class StateReportScraper:
        def __init__(self, year: str, headless: bool = True):
            self.year = year
            self.base_url = f"https://www.ic3.gov/AnnualReport/Reports/{year}State/"
            self.timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
            self.final_data = {}
    
            chrome_opts = Options()
            if headless:
                chrome_opts.add_argument("--headless=new")
                chrome_opts.add_argument("--no-sandbox")
                chrome_opts.add_argument("--disable-gpu")
    
            service = Service(ChromeDriverManager().install())
            self.driver = webdriver.Chrome(service=service, options=chrome_opts)
            self.wait = WebDriverWait(self.driver, 30)
    
        def run(self, delay: float = 1.0):
            print(f"→ {self.year} State Reports sayfası yükleniyor…")
            self.driver.get(self.base_url)
    
            sel_elem = self.wait.until(
                EC.presence_of_element_located((By.TAG_NAME, "select"))
            )
            select = Select(sel_elem)
    
            total = len(select.options)
            for idx, opt in enumerate(select.options, start=1):
                state = opt.text.strip()
                print(f"[{idx}/{total}] {state} çekiliyor…", end="\r")
    
                select.select_by_index(idx - 1)
                self.wait.until(
                    EC.presence_of_all_elements_located((By.TAG_NAME, "table"))
                )
                time.sleep(delay)
    
                html = self.driver.page_source
    
                dfs = pd.read_html(io.StringIO(html))
    
                keys = ["victim_count", "victim_loss", "subject_count", "subject_loss"]
                sd = {}
                for i, key in enumerate(keys):
                    if i < len(dfs):
                        df = dfs[i].dropna(axis=1, how="all")
                        col0, col1 = df.columns[:2]
                        sd[key] = df.set_index(col0)[col1].to_dict()
                self.final_data[state] = sd
    
            print("\n Tüm eyaletler çekildi.")
            self.driver.quit()
    
        def extract(self, separate: bool = True, fmt: str = "xlsx"):
            fmt = fmt.lower()
            fname = f"{self.year}_{self.timestamp}"
            if separate and fmt == "xlsx":
                fname += ".xlsx"
                with pd.ExcelWriter(fname, engine="xlsxwriter") as writer:
                    for state, data in self.final_data.items():
                        df = pd.DataFrame(data)
                        df.to_excel(writer, sheet_name=state[:30])
            else:
                fname += f".{fmt}"
                records = []
                for state, data in self.final_data.items():
                    df = pd.DataFrame(data)
                    df.index.name = "Crime Type"
                    df["State"] = state
                    records.append(df)
                combined = pd.concat(records)
                if fmt == "csv":
                    combined.to_csv(fname)
                else:
                    with pd.ExcelWriter(fname, engine="xlsxwriter") as writer:
                        combined.to_excel(writer)
            print(f" Çıktı kaydedildi → {fname}")
    
    
    def main():
        parser = argparse.ArgumentParser(
            description="IC3 State Reports scraper (JS destekli)"
        )
        parser.add_argument(
            "-y", "--year", required=True, help="Rapor yılı (örn: 2023)"
        )
        parser.add_argument(
            "-s", "--separate", choices=("t","f"), default="t",
            help="Her eyalet ayrı sheet: t / hepsi tek dosya: f"
        )
        parser.add_argument(
            "-t", "--to", choices=("xlsx","csv"), default="xlsx",
            help="Çıktı formatı: xlsx veya csv"
        )
        args = parser.parse_args()
    
        available = get_available_years()
        if args.year not in available:
            print(f"‼ '{args.year}' için veri yok. Kullanılabilir: {', '.join(available)}")
            sys.exit(1)
    
        scraper = StateReportScraper(args.year)
        scraper.run()
        scraper.extract(separate=(args.separate=="t"), fmt=args.to)
    
    
    if __name__ == "__main__":
        main()
    



Toplam Hit: 1057 Toplam Mesaj: 26
excel web scraping python 3