Heim  >  Fragen und Antworten  >  Hauptteil

Scrape das Web mit Python, bin mir aber nicht sicher, was ich mit statischen (?) URLs machen soll

Ich versuche zu lernen, wie man Daten aus dieser URL extrahiert: https://denver.coloradotaxsale.com/index.cfm?folder=auctionResults&mode=preview

Das Problem besteht jedoch darin, dass sich die URL nicht ändert, wenn ich versuche, die Seite zu wechseln, sodass ich nicht sicher bin, wie ich sie auflisten oder durchlaufen soll. Da die Webseite über 3000 Verkaufsdatenpunkte verfügt, wird versucht, einen besseren Weg zu finden.

Dies ist mein Startcode, er ist sehr einfach, aber ich wäre für jede Hilfe oder jeden Tipp dankbar. Ich glaube, ich muss vielleicht auf eine andere Tasche umsteigen, bin mir aber nicht sicher, welche davon schön sein könnte, Suppe?

导入请求
url =“https://denver.coloradotaxsale.com/index.cfm?folder=auctionResults&mode=preview”

html = requests.get(url).content
df_list = pd.read_html(html,标题 = 1)[0]
df_list = df_list.drop([0,1,2]) #删除不需要的行

P粉293341969P粉293341969244 Tage vor313

Antworte allen(1)Ich werde antworten

  • P粉600845163

    P粉6008451632024-02-18 09:42:37

    要从更多页面获取数据,您可以使用以下示例:

    导入请求
    将 pandas 导入为 pd
    从 bs4 导入 BeautifulSoup
    
    
    数据 = {
        "folder": "拍卖结果",
        “登录ID”:“00”,
        "页数": "1",
        "orderBy": "AdvNum",
        "orderDir": "asc",
        "justFirstCertOnGroups": "1",
        "doSearch": "真",
        "itemIDList": "",
        "itemSetIDList": "",
        “兴趣”: ””,
        “优质的”: ””,
        "itemSetDID": "",
    }
    
    url =“https://denver.coloradotaxsale.com/index.cfm?folder=auctionResults&mode=preview”
    
    
    所有数据 = []
    
    for data["pageNum"] in range(1, 3): # <-- 增加此处的页数。
        soup = BeautifulSoup(requests.post(url, data=data).content, "html.parser")
        对于 soup.select("#searchResults tr")[2:] 中的行:
            tds = [td.text.strip() for row.select("td") 中的 td]
            all_data.append(tds)
    
    列= [
        “序列号”,
        “纳税年度”,
        “通知”,
        “包裹ID”,
        “面额”,
        “中标”,
        “卖给”,
    ]
    
    df = pd.DataFrame(all_data, columns=columns)
    
    # 打印数据框中的最后 10 项:
    打印(df.tail(10).to_markdown())
    

    打印:

    <表类=“s-表”> <标题> SEQ NUM 纳税年度 通知 地块 ID 面部数量 中标 卖给 <正文> 96 000094 2020 00031-18-001-000 905.98 美元 81.00 美元 00005517 97 000095 2020 00031-18-002-000 750.13 美元 75.00 美元 00005517 98 000096 2020 00031-18-003-000 750.13 美元 75.00 美元 00005517 99 000097 2020 00031-18-004-000 750.13 美元 75.00 美元 00005517 100 000098 2020 00031-18-007-000 750.13 美元 76.00 美元 00005517 101 000099 2020 00031-18-008-000 905.98 美元 84.00 美元 00005517 102 000100 2020 00031-19-001-000 1,999.83 美元 171.00 美元 00005517 103 000101 2020 00031-19-004-000 1,486.49 美元 131.00 美元 00005517 104 000102 2020 00031-19-006-000 1,063.44 美元 96.00 美元 00005517 105 000103 2020 00031-20-001-000 1,468.47 美元 126.00 美元 00005517

    Antwort
    0
  • StornierenAntwort