首页 > 其他分享 >爬虫数据保存到csv中

爬虫数据保存到csv中

时间:2023-07-29 22:24:05浏览次数:30  
标签:url list 爬虫 保存 jsonpath path csv data

import json
import os.path
import time

from jsonpath import *
# import jsonpath as jsonpath
import pandas as pd
import requests



# url = "http://www.whggzy.com/front/search/category"




def get_resp(url,name,i):
    headers = {

        "Referer": "http://www.whggzy.com/PoliciesAndRegulations/index.html?utm=sites_group_front.26a79a93.0.0.715108e02e0e11ee837be5c5ca3fd993",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
        "Accept": "*/*",
        "Content-Type": "application/json",
        "X-Requested-With": "XMLHttpRequest"
    }
    data = {
        "utm":"sites_group_front.26a79a93.0.0.715108e02e0e11ee837be5c5ca3fd993",
        "categoryCode":f"{name}",
        "pageSize":15,
        "pageNo":f"{i}"
    }
    # json = data,json传参就算将参数转化为json格式进行传递的
    resp = requests.post(url, headers=headers, json=data).json()

    return resp

def save_json(content):
    data = json.dumps(content)
    with open("wh_data.json",'w',encoding="utf-8") as w:
        w.write(data)

def get_data(data_list,csv_path,i):
    base_url = 'http://www.whggzy.com/'
    pathName = ''
    for data in data_list:
        pathName = jsonpath(data,'$..pathName')[0] if jsonpath(data,'$..pathName') else None

        title = jsonpath(data,'$..title')[0] if jsonpath(data,'$..title') else None

        publishDate = jsonpath(data,'$..publishDate')[0] if jsonpath(data,'$..publishDate') else None
        date = time.strftime('%Y-%m-%d',time.localtime(publishDate / 1000))
        attachmentUrl = jsonpath(data,'$..attachmentUrl')[0] if jsonpath(data,'$..attachmentUrl') else None
        url  = base_url + jsonpath(data,'$..url')[0] if jsonpath(data,'$..url') else None
        csv_list = [pathName,title,date,attachmentUrl,url]
        save_csv(csv_list,csv_path)


    print(f'政策法规-->>{pathName}-->> 第{i}页下爬取完毕 !!!')



def judge_csv_file():
    # 当前脚本文件的绝对路径,_file_代表的是appLogger 这个文件
    current_path = os.path.abspath(__file__)
    # 定义一个类属性,保存的文件名称
    csv_path = os.path.join(os.path.abspath(os.path.dirname(current_path)),
                            'wh_data.csv')
    print(csv_path)
    if not os.path.exists(csv_path):
        head_list = ['项目','标题','日期','附件网址','内容地址']
        tb_head = ",".join(head_list) + '\n'
        with open(csv_path,'w',encoding="utf-8") as wf:
            wf.write(tb_head)
    return csv_path


def save_csv(data_list,csv_path):
    data = pd.DataFrame(data=[data_list])
    # 追加数据,mode = 'a',表示追加,index=False 表示不给每行数据加索引序号,header=False 表示不加标题
    data.to_csv(csv_path,mode='a',index=False,header=False,encoding='utf-8')

def run(url):
    csv_path = judge_csv_file()
    name_list = ["GovernmentProcurement","BidAndEngineerConstruction","LandAndMineralRightsTransaction",
                 "TransactionOfPropertyRights","TransactionOfPublicResources"]

    for name in name_list:
        i = 1
        while True:
            content = get_resp(url,name,i)
            save_json(content)
            data_list = content['hits']['hits']
            if data_list:
                get_data(data_list,csv_path,i)
            else:
                break
            i += 1

if __name__ == '__main__':
    url = "http://www.whggzy.com/front/search/category"
    run(url)

  

标签:url,list,爬虫,保存,jsonpath,path,csv,data
From: https://www.cnblogs.com/xingmeng63/p/17590669.html

相关文章

  • 解决QT QGraphicsView提升到QChartView报错的问题
    使用QT提供的QChartView来绘制图表,提升QGraphicsView控件继承QChartView后,然后将QGraphicsView提升到我们自己写的类,怎么才能确保提升后编译不报错呢。[问题描述]使用QGraphicsView显示图表的时候,我们需要将它提升为QChartView.但提升后再此运行一般会发生编译报错,错误发生在......
  • win10锁屏壁纸提取保存
    win10锁屏壁纸提取保存操作将fetchWinScreenAllPic.bat放在任意位置,双击它,在该脚本同级目录会产生一个images文件夹,里面存放着锁频时看到的壁纸图片。可能会包含多张不同尺寸的,甚至是之前存在的(暂时还未被系统清除掉的),选择你想要的那张另存为即可。解释bat脚本如下@echoOFFsetlo......
  • 前端token是什么意思?怎么设置保存?应用场景?实现思路?
    token的意思:服务端生成的一串字符串,作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个token并将此token返回给客户端以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。简单token的组成:uid(用户唯一的身份标识)time(当前时间的时间戳)sig......
  • 爬虫 | 白菜价商品数据抓取
    本实验介绍了一个全新的爬虫思路,通过移动端Web站点爬取数据,方法是借助谷歌浏览器的开发者工具,模拟出移动设备进行网站访问,然后去获取移动端网站的数据接口。后半部分通过爬取4399排行榜与什么值得买白菜商品两个案例,强化对于移动端Web站点爬取技术的学习。知识点移动端W......
  • 写一段python爬虫下载登录用户商品图片的代码
    要下载登录用户的商品图片,你需要模拟登录网站并获取登录后的会话。下面是一个示例代码,用于登录网站并下载登录用户的商品图片:importrequestsimportosfrombs4importBeautifulSoupdeflogin(username,password):login_url="https://example.com/login"sessio......
  • 爬虫 | 美食数据抓取
    本实验将为大家介绍接口爬取的相关知识,通过实验楼课程列表页与IT之家动态页,讲解如何通过开发者工具快速判断数据来源。实验过程将通过爬取美食网、实验楼社区两个案例,说明如何针对接口编写爬虫。知识点接口(API)爬取知识美食案例实操实验楼社区案例实操接口(API)爬取知识......
  • 基于社交网络爬虫的人物兴趣属性分析(四)
    首先我们前三篇完成了这样的工作:选取目标网络——2个,分别是微博和推特,选取的理由:平台类型相似,用户交集大,选取多个社交网络则是因为单一社交网络的数据偶然性和误差性大,所以必须要做多个数据的结合;整个项目的步骤为:多个社交网路的数据爬取——>单个社交网络的数据分析——>多个社交......
  • 基于社交网络爬虫分析人物兴趣属性(一)
    这次做的一个项目中涉及人物画像,做人物画像中兴趣属性很关键的一点就是要收集足够多的人物数据,基础工作就是进行爬虫的书写,收集数据集。对于一个社交网络来说,这里最大最实用的数据集合就是用户发布的帖子,因为里面的东西会关联到个人的兴趣爱好,甚至工作生活,从中做主题提取就可以大致......
  • 爬虫 | 产品经理书单抓取
    本实验将讲解BeautifulSoup4库解析HTML的常见用法,它的中文名字是「美丽汤」。在使用pip安装该库时的名字是beautifulsoup4,在使用该库时包的名字是bs4,要注意它们的区别。BeautifulSoup4专注于解析HTML/XML源码并提取想要的信息,也就是我们在使用爬虫工具爬取页......
  • 爬虫基本工具:urllib丶requests丶selenium丶pytesseract
    urllib来实现cookie和ip代理1fromurllib.requestimportRequest,build_opener,urlopen2fromfake_useragentimportUserAgent3fromurllib.parseimporturlencode4fromurllib.requestimportHTTPCookieProcessor5fromhttp.cookiejarimportCookieJ......