【问题标题】:How to create a file and save scraped data in it?如何创建文件并将抓取的数据保存在其中?
【发布时间】:2018-05-03 02:45:00
【问题描述】:

我已经编写了这个脚本,但我尝试了几个选项来保存数据,但我一直在弄乱代码。如何将提取的数据保存到 csv 或 excel 文件中?

import requests
from bs4 import BeautifulSoup

base_url = "http://www.privredni-imenik.com/pretraga?abcd=&keyword=&cities_id=0&category_id=0&sub_category_id=0&page=1"
current_page = 1

while current_page < 200:
    print(current_page)
    url = base_url + str(current_page)
    #current_page += 1
    r = requests.get(url)
    zute_soup = BeautifulSoup(r.text, 'html.parser')
    firme = zute_soup.findAll('div', {'class': 'jobs-item'})

    for title in firme:
        title1 = title.findAll('h6')[0].text
        print(title1)
        adresa = title.findAll('div', {'class': 'description'})[0].text
        print(adresa)
        kontakt = title.findAll('div', {'class': 'description'})[1].text
        print(kontakt)
        print('\n')
        page_line = "{title1}\n{adresa}\n{kontakt}".format(
            title1=title1,
            adresa=adresa,
            kontakt=kontakt
        )
    current_page += 1

【问题讨论】:

    标签: python beautifulsoup screen-scraping


    【解决方案1】:

    获取 CSV 的一种简单方法是打印以逗号分隔的每一行,然后使用操作系统的“>”写入文件。

    import csv
    import requests
    from bs4 import BeautifulSoup
    
    base_url = "http://www.privredni-imenik.com/pretraga?abcd=&keyword=&cities_id=0&category_id=0&sub_category_id=0&page=1"
    current_page = 1
    
    
    with open('scrape_results.csv', 'w', newline='') as scrape_results:
        csvwriter = csv.writer(scrape_results)
    
        while current_page < 200:
            url = base_url + str(current_page)
            r = requests.get(url)
            zute_soup = BeautifulSoup(r.text, 'html.parser')
            firme = zute_soup.findAll('div', {'class': 'jobs-item'})
    
            for title in firme:
                title1 = title.findAll('h6')[0].text
                adresa = title.findAll('div', {'class': 'description'})[0].text
                kontakt = title.findAll('div', {'class': 'description'})[1].text
                csvwriter.writerow([current_page, title1, adresa, kontakt])
    
            current_page += 1
    

    【讨论】:

    • 奇怪的是,它根本不刮,,kontakt``。我只是得到title和adresa。但它按预期保存到 csv 中
    • OOps。我的错误我发现它把所有东西都刮掉了!谢谢!
    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2019-08-22
    相关资源
    最近更新 更多