首页 > 编程问答 >如何使用 python 和 bs4 修复抓取 web 表输出 csv

如何使用 python 和 bs4 修复抓取 web 表输出 csv

时间:2024-08-01 15:31:16浏览次数:15  
标签:python csv web-scraping beautifulsoup

请帮帮我,, 我想在“td”、“Barcode”和“nama produk”中获取 2 个数据,但我得到的数据非常糟糕。我应该修复什么?

import csv
import requests
from bs4 import BeautifulSoup


outfile = open("dataaa.csv","w",newline='')
writer = csv.writer(outfile)


page = 0
while page < 3 :
    url = "http://ciumi.com/cspos/barcode-ritel.php?page={:d}".format(page)
    response = requests.get(url)
    tree = BeautifulSoup(response.text, 'html.parser')
    page += 1
    table_tag = tree.select("table")[0]
    tab_data = [[item.text for item in row_data.select("tr")]
    for row_data in table_tag.select("td")]
    for data in tab_data:
        writer.writerow(data)
        print(table_tag)
        print(response, url, ' '.join(data))


import fileinput
seen = set() 
for line in fileinput.FileInput('dataaa.csv', inplace=1):
    if line in seen: continue

    seen.add(line)
    print (line)

我需要改进什么才能获得漂亮的结果?


的代码存在一些问题,导致从网站中提取的数据不正确。以下是更正后的代码,以及对所做的更改的解释:

import csv
import requests
from bs4 import BeautifulSoup

outfile = open("dataaa.csv", "w", newline="")
writer = csv.writer(outfile)

# 写入 CSV 文件的标题行
writer.writerow(["Barcode", "Nama Produk"])  

page = 0
while page < 3:
    url = "http://ciumi.com/cspos/barcode-ritel.php?page={:d}".format(page)
    response = requests.get(url)
    tree = BeautifulSoup(response.text, 'html.parser')
    page += 1

    table_tag = tree.find("table")  # 使用 find() 查找第一个表格
    rows = table_tag.find_all("tr")[1:]  # 跳过标题行

    for row in rows:
        cols = row.find_all("td")
        barcode = cols[1].text.strip()  # 获取第二个单元格(Barcode)
        nama_produk = cols[2].text.strip()  # 获取第三个单元格(Nama Produk)
        writer.writerow([barcode, nama_produk])
        print(f"Barcode: {barcode}, Nama Produk: {nama_produk}") 

outfile.close() 

代码解释:

  1. 添加标题行: 代码的第一部分添加了一行代码,将 "Barcode" 和 "Nama Produk" 作为标题写入 CSV 文件。
  2. 查找表格和行: 使用 table_tag.find_all("tr") 获取表格中的所有行。然后使用 [1:] 切片列表以跳过标题行。
  3. 提取数据: 循环遍历每一行,使用 row.find_all("td") 获取所有单元格。然后,使用索引 [1] [2] 提取 "Barcode" 和 "Nama Produk" 的值。
  4. 写入 CSV 文件: 将提取的数据写入 CSV 文件。
  5. 打印输出: 将提取的数据打印到控制台,方便查看。
  6. 关闭文件: 使用 outfile.close() 关闭 CSV 文件,确保所有数据都被写入。

改进之处:

  • 代码结构更清晰: 每个步骤都有清晰的注释,便于理解代码的功能。
  • 数据提取更准确: 使用正确的索引提取 "Barcode" 和 "Nama Produk" 的值。
  • 添加了标题行: 使 CSV 文件更易读。
  • 关闭文件: 确保所有数据都被写入 CSV 文件。

这段代码将为提供一个名为 "dataaa.csv" 的文件,其中包含从网站上抓取的 "Barcode" 和 "Nama Produk" 数据。

标签:python,csv,web-scraping,beautifulsoup
From: 57802703

相关文章

  • 基于Django的超市小程序+47822(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小
    基于django超市小程序摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,超市小程序被用户普遍使用,为方便用户能够可以随时进行超市小程序的数据信息管理,特开发了基于djan......
  • 【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管
    随着信息技术的迅猛发展,传统的医院挂号管理方式面临着效率低下、排队时间长、信息不对称等诸多问题。这些问题不仅影响患者的就医体验,也加重了医院工作人员的负担。在此背景下,基于Python的医院挂号管理系统应运而生。该系统旨在通过信息化手段优化挂号流程,提高管理效率,提升医疗......
  • Python-PLAXIS自动化建模技术与典型岩土工程
    原文链接:Python-PLAXIS自动化建模技术与典型岩土工程https://blog.csdn.net/2301_78164062/article/details/140607885?spm=1001.2014.3001.5501一:Plaxis软件及PlaxisPythonAPI环境搭建1、Plaxis2D\Plaxis3D软件2、面向对象编程语言Python及其开发环境Spyder3、Plaxis输......
  • 在Conda环境中安装python内核
    我刚刚开始使用jupyter笔记本进行我的开发过程。我首先创建一个新的python环境:$condacreate-ntestenv然后激活它:$sourceactivatetestenv并安装python内核模块:$pipinstallipykernel现在,模糊性开始了。我只想专门为我的活动环境创建一个新内核。......
  • C++11 中的 python 海象运算符 (:=) 等效吗?
    最近我在Python中经常使用:=运算符,这样:ifmy_object:=SomeClass.function_that_returns_object():#dosomethingwiththisobjectifitexistsprint(my_object.some_attribute)问题有没有办法在c++11中做到这一点而不使用stdlib?例如......
  • Python 自动创建阿里云 OSS 桶并配置静态网站托管
    在本文中,我们将介绍如何使用Python和阿里云OSSSDK自动创建OSS桶(如果不存在),并为新创建的桶配置静态网站托管。这对于自动化部署和管理静态网站非常有用。前提条件安装阿里云OSSSDK:pipinstalloss2准备好阿里云OSS的访问密钥(AccessKeyID和AccessKeySecret......
  • visual studio 2019下Python的开发环境搭建
    Python的开发环境有各种各样的,在Windows下可以通过各种IDE(IIntegratedDevelopmentEnvironment)来进行开发,比如Pycharm,Spyder,Thonny,Eclipse+PyDev等等一些琳琅满目的编辑器,当然还有我的选择VisualStudio。之所以会选择VS,是因为VS本身就是一个功能非常强大的集成开发环境,其优......
  • 用Python编写你的网络监控系统详解
    概要在现代网络管理中,实时监控网络流量和状态是保证网络正常运行的关键。使用Python编写网络监控工具可以帮助管理员及时发现和解决网络问题。本文将详细介绍如何使用Python编写网络监控工具,包括基本概念、常用库及其应用场景,并提供相应的示例代码。网络监控的基本概念网......
  • Python WSGI服务器库之gunicorn使用详解
    概要在部署PythonWeb应用程序时,选择合适的WSGI服务器是关键的一步。Gunicorn(GreenUnicorn)是一个高性能、易于使用的PythonWSGIHTTP服务器,适用于各种应用部署场景。Gunicorn设计简洁,支持多种工作模式,能够有效地管理和处理大量并发请求。本文将详细介绍Gunicorn......
  • 基于python电影播放平台的设计与实现【源码+文档+PPT】
    ......