首页 > 其他分享 >爬虫实践07 | 爬取香港展会客户名单

爬虫实践07 | 爬取香港展会客户名单

时间:2023-10-17 17:36:48浏览次数:152  
标签:07 客户名单 爬取 item json cookie print Sec data

完整代码

import requests
import time
import pandas as pd
url = 'https://www.globalsources.com/api/gsol-trade-show-bff/hk-online/v1/search-all-exhibitors'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
    'Sensorsid': '$device_id=18b3bbff2979e5-093596827e477f8-26031e51-1327104-18b3bbff298123a',
    'Referer':'https://www.globalsources.com/trade-fair/hongkongshow/fashion?source=OS_HK_HP_TopTab',
    'Sec-Ch-Ua-Mobile':'?0',
    'Sec-Ch-Ua-Platform':"Windows",
    'Sec-Fetch-Dest':'empty',
    'Sec-Fetch-Mode':'cors',
    'Sec-Fetch-Site':'same-origin'
    #可以加1个cookie,但是因为这个cookie是变化的,如果固定,爬到的数据就是有限的
   }

data = []

for page in range(1, 11):  # 循环获取 1 到 10 页的数据
    payload = {
        "categoryCode": "LIFESTYLE_FASHION_1",
        "pageNum": page,
        "pageSize": 40,
        "searchKey": ""
    }

    response = requests.post(url=url, json=payload, headers=headers)

    if response.status_code == 200:
        text = response.text
    
    
    try:
        json_data = response.json()
        for item in json_data['data']['list']:
            name = item['supplier'].get('companyName')
            boothid = item['boothId']
            data.append([name, boothid])
    except ValueError as e:
        print('解析json数据失败:', e)
        print('响应内容:', text)


    time.sleep(2)

#for i,item in enumerate(data):
    #print(f"{i+1},{item[0]}, {item[1]}")

df = pd.DataFrame(data, columns=['公司名', '展位'])
df.to_excel('香港展会公司名单.xlsx', index=False)

print("香港展会公司名单.xlsx 文件中。")  

1、网址:https://www.globalsources.com/

2、这是一个post请求;

3、通过观察Python 爬虫中循环遍历多个页面,但是页面数没有直接体现在 URL 中,而是通过请求参数 payload 进行传递,所以要在payload中循环;

4、这里面有反爬机制,要封装好header头,把一些参数都放上去,本来要放cookie值的,但是这个cookie是有限的,试了一下固定cookie,但是只能爬到3页的数据。所以就没有固定Cookie;

5、客户名称的值在companyNamename里面,上一层是supplier,所以写法为name = item['supplier'].get('companyName');展位取值写法为boothid = item['boothId']

 

 

 

标签:07,客户名单,爬取,item,json,cookie,print,Sec,data
From: https://www.cnblogs.com/lxhui/p/17770228.html

相关文章

  • day07-java常见加密
    1.Java常见加密1.1隐藏字节TreeMapmap=newTreeMap();map.put("sign",x);#搜索关键字signStringa=newString(newbyte[]{-26,-83,-90,-26,-78,-101,-23,-67,-112});TreeMapmap=newTreeMap();map.put(a,x);#hook机制,找到TreeMap中的put方法,......
  • [907] Merge multiple PDF files into one in Python
    YoucanmergemultiplePDFfilesintooneusingvariousPythonlibraries.OnecommonapproachistousethePyPDF2library,whichallowsyoutomanipulatePDFfiles.Here'sastep-by-stepguidetomergingmultiplePDFsintooneusingPyPDF2:First,......
  • selenium 版本4爬取淘宝商品信息
    fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeysfromtimeimportsleep#访问淘宝页面path=Service('C:\Python38\chromedrive......
  • Leetcode707. 设计链表
    题目描述你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从0开始。实现M......
  • 代码随想训练营第三天(Python) | 203.移除链表元素、707.设计链表、206.反转链表
    一、203.移除链表元素关键点:如何删除节点,需要知道删除节点前的节点。1、无虚拟头节点的方法classSolution:defremoveElements(self,head:Optional[ListNode],val:int)->Optional[ListNode]:whilehead!=Noneandhead.val==val:#如果头节点的值......
  • JavaSE基础07(集合)
    集合collection数组存放数据的弊端:数组定义后长度不可变;定义数组的类型不能变,数据只能存放指定类型的对象;解决数组存放的弊端方法:摒弃小数组,换一个更大的来存放(动态数组扩容);数组定义成Object,可以存放所有的类型;集合扩容在原来的基础上+>>1;System.arraycopy......
  • 基于JT/T1078协议的开源 java视频服务系统
    ​首先,让我们来概述一下JT/T1078协议。JT/T1078协议,也称为"道路交通视频监控系统信息模型与通信协议",是由中华人民共和国交通运输部提出并规范的一种视频服务协议,主要应用于道路交通视频监控系统的设计和实施。其目的是确保视频服务的互操作性、可扩展性和安全性。基于JT/T1078......
  • PAT_A1070 Mooncake
    MooncakeisaChinesebakeryproducttraditionallyeatenduringtheMid-AutumnFestival.Manytypesoffillingsandcrustscanbefoundintraditionalmooncakesaccordingtotheregion'sculture.Nowgiventheinventoryamountsandthepricesofall......
  • 20231407陈原《计算机科学与概论》及《C语言程序设计》第三周学习情况
    [2022-2023-1-计算机基础与程序设计]2023-2024-1计算机基础与程序设计第三周作业https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP[2022-2023-1计算机基础与程序设计第一周作业](https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03)作业目标学习《计算机科......
  • P2607 [ZJOI2008] 骑士
    P2607[ZJOI2008]骑士[P2607ZJOI2008]骑士-洛谷|计算机科学教育新生态(luogu.com.cn)目录P2607[ZJOI2008]骑士题目大意思路code题目大意给你一个\(n\)个点,\(n\)条边的基环树森林。你可以从中选择若干个点,满足两两之间不存在边相连。每个点有一个权值,请问最大的......