【问题标题】:Using BeautifulSoup to exploit a URL and its dependent pages and store results in csv?使用 BeautifulSoup 来利用 URL 及其相关页面并将结果存储在 csv 中?
【发布时间】:2022-01-14 02:39:50
【问题描述】:

这段代码不会崩溃,这很好。但是,它会生成并清空 icao_publications.csv f。我想用来自 URL 的所有页面上的所有记录填充 icao_publications.csv 并捕获所有页面。数据集应该是大约 10,000 行或总共大约 10,000 行。 我想在 csv 文件中获取这 10,000 左右的行。

import requests, csv
from bs4 import BeautifulSoup

url = 'https://www.icao.int/publications/DOC8643/Pages/Search.aspx'

with open('Test1_Aircraft_Type_Designators.csv', "w", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["Manufacturers", "Model", "Type_Designator", "Description", "Engine_Type", "Engine_Count", "WTC"])

    while True:
        html = requests.get(url)
        soup = BeautifulSoup(html.text, 'html.parser')
        for row in soup.select('table tbody tr'):
            writer.writerow([c.text if c.text else '' for c in row.select('td')])


        if soup.select_one('li.paginate_button.active + li a'):
            url = soup.select_one('li.paginate_button.active + li a')['href']
        else:
            break

【问题讨论】:

    标签: pandas csv web-scraping beautifulsoup pagination


    【解决方案1】:

    给你:

    import requests
    import pandas as pd
    
    url = 'https://www4.icao.int/doc8643/External/AircraftTypes'
    resp = requests.post(url).json()
    df = pd.DataFrame(resp)
    df.to_csv('aircraft.csv',encoding='utf-8',index=False)
    print('Saved to aircraft.csv')
    

    【讨论】:

    • 亲爱的 bushcat69,就这样,几行。极好的!请问网址,我不熟悉?非常感谢。
    • 如果您打开浏览器的开发者工具 - 网络 - 获取/Xhr,然后重新加载您尝试抓取的页面,您应该会看到一堆后端 api 调用。那些本身是可刮的。其中一个向我使用的那个 URL 发出了一个 post 请求,如果你查看该请求的 Preview 选项卡,你会看到一个包含你想要的 11k-ish 平面的大文件。由于它位于字典列表中,因此很容易放入数据框并导出到 csv。如果您愿意,请随时询问更多问题
    • 我按照您的指示看到了 www4。很整洁的东西。谢谢!
    • 亲爱的 bushcat69,在数据集中,法语和德语字符如 à ä è ü 都存在,但代码使用 √°。代码可以解决这两点吗?非常感谢
    • 我已经编辑了代码以确保它使用 utf-8 编码,似乎对我有用。但是你在你身边打开它还需要确保它使用的是 utf-8 编码(我已经在 VS-Code 中打开它并且看起来不错)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2011-08-12
    相关资源
    最近更新 更多