不知道~- 2023-02-18 16:57 采纳率: 54.2%
浏览 23
已结题

完善代码将用xpath获取的数据保存到csv中

需求:1:数据保存csv中 格式正确

img

2# 福利信息每项用 # 分隔)保存到D://新闻列表.csv文件中。

# 岗位信息,地区,工作,经验,学历,福利。
import requests


def gethtml(url):
    header = {
        'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'

    }
    res = requests.get(url, headers=header)
    return res.text
    # print(res.text)


from lxml import etree


def getParse(url):
    tree = gethtml(url)
    html = etree.HTML(tree)
    d_i = html.xpath('//*[@id="area"]/div[4]//div')
    for i in d_i:
        # 福利信息每项用  # 分隔)保存到D://新闻列表.csv文件中。
        # print(i)
        information = i.xpath('./div[1]/a/img/@alt')
        gw=[]

        for j in information:
            # print(j)
            gz = i.xpath("./div[2]/div[1]/a/text()")
            diqu = i.xpath("normalize-space(./div[2]/div[1]/span/text())")
            qian = i.xpath("./div[2]/p/span[1]/text()")
            jinyan = i.xpath("./div[2]/p/span[2]/text()")
            xl = i.xpath("./div[2]/p/span[2]/span/text()")
            fuli = i.xpath("./div[2]/ul//li/text()")
            # fuli = i.xpath("./div[2]/ul//li/text()").replace(',','#') TODO 实现不了
            print(j, diqu, gz, qian, jinyan, fuli)
            dit = {
                '岗位信息': j,
                '地区': diqu,
                '工作': gz,
                '经验,学历': jinyan,
                '福利': fuli
            }
            import csv
            f = open("./新闻列表.csv", 'a', encoding='utf-8', newline='')
            csv_writer = csv.DictWriter(f, fieldnames=['岗位信息', '地区', '工作', '经验,学历', '福利'])
            csv_writer.writeheader()
            csv_writer.writerow(dit)



getParse("http://www.pjob.net/china.htm")


  • 写回答

3条回答 默认 最新

  • qq_46161207 2023-02-18 17:43
    关注

    以下是修改后的代码,将岗位信息、地区、工作、经验和学历以及福利信息保存到CSV文件中。注意,使用CSVWriter写入数据时应在程序启动时只写入一次表头。

    
    import requests
    import csv
    
    def gethtml(url):
        header = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
        }
        res = requests.get(url, headers=header)
        return res.text
    
    
    from lxml import etree
    
    def getParse(url):
        tree = gethtml(url)
        html = etree.HTML(tree)
        d_i = html.xpath('//*[@id="area"]/div[4]//div')
        with open("D://新闻列表.csv", 'w', encoding='utf-8', newline='') as f:
            csv_writer = csv.writer(f)
            csv_writer.writerow(['岗位信息', '地区', '工作', '经验,学历', '福利'])
        for i in d_i:
            information = i.xpath('./div[1]/a/img/@alt')
            gw=[]
            for j in information:
                gz = i.xpath("./div[2]/div[1]/a/text()")
                diqu = i.xpath("normalize-space(./div[2]/div[1]/span/text())")
                qian = i.xpath("./div[2]/p/span[1]/text()")
                jinyan = i.xpath("./div[2]/p/span[2]/text()")
                xl = i.xpath("./div[2]/p/span[2]/span/text()")
                fuli = i.xpath("./div[2]/ul//li/text()")
                dit = {
                    '岗位信息': j,
                    '地区': diqu,
                    '工作': gz,
                    '经验,学历': jinyan,
                    '福利': '#'.join(fuli)
                }
                with open("D://新闻列表.csv", 'a', encoding='utf-8', newline='') as f:
                    csv_writer = csv.DictWriter(f, fieldnames=['岗位信息', '地区', '工作', '经验,学历', '福利'])
                    csv_writer.writerow(dit)
    
    getParse("http://www.pjob.net/china.htm")
    

    在上面的代码中,我们将CSV文件的存储路径设置为"D://新闻列表.csv",可以根据需要自定义存储路径。在程序启动时,我们只写入一次表头。在循环中,将每一行的数据保存到字典中,然后使用CSVWriter将其写入CSV文件。在写入时,我们使用'#'.join(fuli)将福利信息转换为以#号分隔的字符串,并将其写入CSV文件中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 基于RTKLIB框架写的精密单点定位-AR
  • ¥15 PFENet的预训练权重
  • ¥15 程序哪有错误怎么改?
  • ¥15 交换机和交换机之间的链路带宽以及主机带宽的理解
  • ¥15 ai创想家对战模式代码
  • ¥15 集合A由3个2行4列二维数组构成,从集合A中任意取一个二维数组元素、如果该二维数组元素的对应列位置的上、下两数都是奇数,而且仅有2个列是奇数/奇数,则该数组有意义,并放入集合B中打印输出。
  • ¥15 电信IPV6 无法外网访问吗
  • ¥15 有偿求效果比较好的遥感影像匹配的c++代码
  • ¥15 博主,你好,我下载了你的智能网联汽车辅助驾驶安全信息检测系统,现在不会运行,可以教我吗,
  • ¥15 怎么在excle输入下列公式