Maison  >  Questions et réponses  >  le corps du texte

Scraper le Web à l'aide de Python mais je ne sais pas quoi faire avec les URL statiques (?)

J'essaie d'apprendre à extraire des données de cette URL : https://denver.coloradotaxsale.com/index.cfm?folder=auctionResults&mode=preview

Cependant, le problème est que lorsque j'essaie de changer de page, l'URL ne change pas, donc je ne sais pas comment l'énumérer ou la parcourir en boucle. Étant donné que la page Web contient 3 000 points de données de vente, nous essayons de trouver une meilleure méthode.

Ceci est mon code de départ, c'est très simple mais je serais reconnaissant pour toute aide que je peux apporter ou tout conseil. Je pense que je devrais peut-être passer à un autre sac, mais je ne sais pas lequel pourrait être le plus beau ?

导入请求
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 Il y a quelques jours312

répondre à tous(1)je répondrai

  • P粉600845163

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

    Pour obtenir des données de plus de pages, vous pouvez utiliser l'exemple suivant :

    导入请求
    将 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())
    

    Impression :

    <表类=“s-表”> <标题> NUMÉRO SEQ Année d'imposition Notification ID du terrain Nombre de visages Enchère gagnante Vendu à <正文> 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

    répondre
    0
  • Annulerrépondre