老师,这是我爬取京东联盟的源码,由于爬取所有的商品信息,例如牙膏有23749这是理论数据值,
但是实际爬取发现,当爬取到9500条时数据便替换成了其他的数据,如下图,但是我换了另外一个ip进行测试,发现当我从96页开始请求(一页一百条数据),同样也不是牙膏的商品数据,不知道到到底是理论数据不对的问题,还是遭遇了特别的反爬虫,只有牙膏和牙刷数据不对,其他的数据是没有问题(总共有五种商品),具体信息看附件
然后面试跟我反馈有以下几点问题:
说我的爬取没有使用价格区分(这里没有理解他的意思)
牙膏和牙刷数据不全(这里就是上面的那个问题)
爬取的逻辑不对
解决方法我只能针对第三个问题进行改进,如采用scrapy-redis进行爬取,效率更高,由于没有form_data表单中的searchUUID没有更改(可能是这被反爬了),所以可以更改searchUUID,但是这些理论上只是不完美,逻辑问题上想不出其他的问题。
恳请老师指点!谢谢!
口腔护理.txt
漱口水.txt
牙膏2.txt
牙膏.txt
牙线棒.txt
牙刷.txt
requests
json
time
url=headers={
: ,
: ,
: ,
: ,
:,
:,
:,
:,
:,
:,
:,
:,
:,
:,
:,
:,
}
cat3ids=[,,,,]name={
:,
:,
:,
:,
:}
proxy=[,
,
,
,
,
,
,
,
,
]
cat3id cat3ids:
(.format(name[(cat3id)]))
payload_data={:,:,:,:{:,:,:cat3id,:,:,:,:,:,:,:,:,:,:}}
resp=requests.post(url,=json.dumps(payload_data),=headers,={:proxy[]})
totalCount=resp.json()[][][]f=(.format(name[(cat3id)]),,=)
i (totalCount//):
(.format(i+)) payload_data1 = {: i+, : , : ,
: {: , : , : cat3id, : ,
: , : , : , : , : , : ,
: , : , : }}
resp = requests.post(url, =json.dumps(payload_data1), =headers,={:proxy[]})
contents=resp.json()[][]
content contents:
skuname=content[][]
count=content[][]
f.write(.format(,,name[(cat3id)],skuname,count))
time.sleep()
()
time.sleep()
payload_data2 = {: (totalCount//)+, : totalCount%, : ,
: {: , : , : cat3id, : ,
: , : , : , : , : , : ,
: , : , : }}
resp = requests.post(url, =json.dumps(payload_data2), =headers,={:proxy[]})
contents2 = resp.json()[][]
content2 contents2:
skuname2 = content2[][]
count2 = content2[][]
f.write(.format(, , name[(cat3id)], skuname2, count2))
f.close()