爬取快递100网战快递网点

0
如何爬取快递100网站上的任意一个快递公司全国的网点和地址
已邀请:
1

一只写程序的猿 - 一个圣骑士成熟的标志是不再向盲人解释阳光。公众号:Python攻城狮 2018-03-08 回答

 
  • 申请使用快递100提供的接口,不过一般接口对每天的采集量都有限制,想要获取更多信息,就自己写爬虫采集
  • 自己写爬虫,进入快递网点大全抓包分析,想要抓取不同的城市,替换下边的城市编号即可,然后对返回的html进行解析,提取快递网点的地址。

import requests

city = '3408'
page = '1'
api = 'https://www.kuaidi100.com/network/net_' + city + '_all_all_' + page + '.htm'
print(api)

my_headers = {
'Host': 'www.kuaidi100.com',
'Referer': 'https://www.kuaidi100.com/network/clist.shtml',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36'
}
r = requests.get(url=api, headers=my_headers)
print(r.text)
你的需求是采集任意一个快递公司全国的网点和地址,这就牵扯到页码的增加和城市码的替换。
两种方法:
  1. 使用requests采集快递100网站每个城市对应的城市码,然后放入列表,变换城市,然后代码中设置页码递增进行采集
  2. 放弃requests采集,而是使用Scrapy进行深度爬虫,自动提取相应的规则进行采集。这里就用到
    核心处理规则: from scrapy.spiders import CrawlSpider, Rule 核心处理提取: from scrapy.linkextractors import LinkExtractor
    两个方法都行,我推荐第二种。

要回复问题请先登录注册