Python Kodu Fix
-
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.
-
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 denersinTermux mu
-
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 denersinTermux mu
python hocam arkadasin calistirmasi icin gerekli kurmasi gerekenleri yazdim koduda test.py diye kaydedip calistiracak ama denemedi sanirim :) saglik olsun
-
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 denersinTermux 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...
-
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 denersinTermux 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 -
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 denersinTermux 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.
bi sorun yok
https://prnt.sc/jYEVdAjD3DsW -
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 denersinTermux 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.
bi sorun yok
https://prnt.sc/jYEVdAjD3DsWVerdiğin linkteki (pastebin) kodun bu olduğundan eminmisin c/p yaparken bir sorun mu oldu noldu ben anlamadım simdi....
-
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?
-
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 denersinTermux 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.
bi sorun yok
https://prnt.sc/jYEVdAjD3DsWbugun bunu deneyecegim. digeri ile cekilen veriler dogru gelmmiyor. cok tesekkurler.
-
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 denersinTermux 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.
bi sorun yok
https://prnt.sc/jYEVdAjD3DsWVerdiğ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()