分析每页的url特征
- 打开淘宝网,搜索
手机
- 第一页:https://s.taobao.com/search?q=%E6%89%8B%E6%9C%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170803&p4ppushleft=5%2C48&s=0
- 第二页:https://s.taobao.com/search?q=%E6%89%8B%E6%9C%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170803&p4ppushleft=5%2C48&s=48
- 可以看出,规律为第一页为
s=0
,第二页为s=48
依此类推可以构造出所有页面的url
分析每个页面所需数据藏身的位置
- 用谷歌浏览器的F12来分析,切到nerwork标签,刷新第一页
- 切到doc标签,在response里面搜索关键字,发现目标数据藏在
<script>
标签中
- 用正则表达式就可以把数据截取出来
- 用json.loads就可以把其转换成字典操作
代码
# -*- coding: utf-8 -*-
import re
import json
import requests
# 构造20页所有的url
urls = []
url_format = "https://s.taobao.com/search?q=%E6%89%8B%E6%9C%BA&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.50862.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170803&p4ppushleft=5%2C48&s={}"
for i in range(0, 20):
urls.append(url_format.format(i*48))
# 抓取每页的信息
for url in urls:
res = requests.get(url)
obj_info = re.search(r"g_page_config = ({.*?});", res.text)
info = json.loads(obj_info.group(1))
goods_info = info['mods']['grid']['data']['spus']
for i in goods_info:
print i['title'], i['price'], i['pic_url'], i["month_sales"]