莫凡辰 发表于 2022-3-24 08:56:46

[新人求助]爬取肯德基餐厅地址出现错误

为什么最后得到的数据是‘-1000’?问题出在哪?

大马强 发表于 2022-3-24 09:51:45

可能是没加cookie被反爬了吧
我以前有写过爬kfc,我拿我的改一改
import requests
import json
url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"


def get_post(url, kw, page):
    headers = {'Cookie': 'route-cell=ksa; ASP.NET_SessionId=ij2qbknlxns3ug4yrpqmyqvi; Hm_lvt_1039f1218e57655b6677f30913227148=1606209815; Hm_lpvt_1039f1218e57655b6677f30913227148=1606209815; SERVERID=825676b1eb536df327d3ca8f626c0188|1606210624|1606209837',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
    data = {
      "cname": "",
      "pid": "",
      "keyword": kw,
      "pageIndex": page,
      "pageSize": "10",
    }

    req = requests.post(url=url, data=data, headers=headers)
    return req.text


ky = input("请输入要查询的地址:")
target = []
with open(ky+"的肯德基餐厅地址详情.html", "w", encoding="utf-8") as fp:
    temp = get_post(url, ky, 1)
    json.dump(temp, fp=fp, ensure_ascii=False)
    # for page in range(1, 100):

    #   temp = get_post(url, ky, page)
    #   if temp == []:
    #         print('录入完毕')

    #         break
    #   for each in temp:
    #         fp.write("地点:" + each['provinceName'] +
    #                  each['cityName']+each['addressDetail']+'\n')
    #         fp.write("餐厅名字:"+each['storeName']+"店\n")
    #         if each['pro'] == None:
    #             fp.write("详情: \n")
    #         else:
    #             fp.write("详情:"+each['pro']+'\n')
    #         fp.write('====================\n')


"{\"Table\":[{\"rowcount\":16}],\"Table1\":[{\"rownum\":1,\"storeName\":\"海口东站\",\"addressDetail\":\"东环高铁海口东站HKD1、HKD2处商业网点\",\"pro\":\"Wi-Fi,点唱机,礼品卡\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":2,\"storeName\":\"海口秀英万达\",\"addressDetail\":\"秀英万达广场1001铺(海榆中线与椰海大道交叉口东北侧)\",\"pro\":\"24小时,Wi-Fi,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":3,\"storeName\":\"海口吾悦\",\"addressDetail\":\"迎宾路18号海口新城吾悦广场\",\"pro\":\"24小时,Wi-Fi\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":4,\"storeName\":\"美兰机场\",\"addressDetail\":\"海口美兰国际机场美兰美购城二楼2-B-3商铺\",\"pro\":\"Wi-Fi,机场店\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":5,\"storeName\":\"港珠澳大桥\",\"addressDetail\":\"港珠澳大桥珠海口岸集散广场商业C1-007号商铺\",\"pro\":\"Wi-Fi\",\"provinceName\":\"广东省\",\"cityName\":\"珠海市\"},{\"rownum\":6,\"storeName\":\"海口远大\",\"addressDetail\":\"长滨四路7号远大购物中心\",\"pro\":\"24小时,Wi-Fi,点唱机,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":7,\"storeName\":\"海口绿色佳园\",\"addressDetail\":\"凤翔东路6号绿色佳园10-110商铺一层(琼山五小对面)\",\"pro\":\"24小时,Wi-Fi,点唱机,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":8,\"storeName\":\"海口椰海\",\"addressDetail\":\"府城镇迈仍村椰海家园小区一层105\",\"pro\":\"Wi-Fi,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":9,\"storeName\":\"海口居然之家\",\"addressDetail\":\"市辖区滨海大道路102号海口居然之家一层商铺\",\"pro\":\"Wi-Fi,点唱机,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"},{\"rownum\":10,\"storeName\":\"海口民声路\",\"addressDetail\":\"市辖区茉莉路与民声东路交叉口东北侧2号楼一层101号商铺\",\"pro\":\"Wi-Fi,点唱机,店内参观,生日餐会\",\"provinceName\":\"海南省\",\"cityName\":\"海口市\"}]}"

cflying 发表于 2022-3-24 19:55:30

本帖最后由 cflying 于 2022-3-24 20:04 编辑

你仔细看网站,是不是还有个op=你给漏了{:10_277:}

下次你先在网站上查询成功了(这里目的是获取有效查询方式),再用同样的方法爬一下(这里目的是验证一下方法是否可行),结果一致后再批量爬(批量开干)

莫凡辰 发表于 2022-3-26 15:09:07

cflying 发表于 2022-3-24 19:55
你仔细看网站,是不是还有个op=你给漏了

下次你先在网站上查询成功了(这里目的是获取有效查 ...

确实,多谢多谢{:10_266:}
页: [1]
查看完整版本: [新人求助]爬取肯德基餐厅地址出现错误