|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
首先说一下情况,这是一个唯品会的爬虫,就是一个 API 接口
然后我在本地运行爬虫是能够得到 json 信息的,也就是跟网页显示的一样,但是我把爬虫放到服务器上面运行就发现请求得到的是一个403网页,
同样是爬虫,为什么会这样?这难道是被反爬虫了么?
(本地系统是win10,服务器是Ubuntu)
爬虫代码贴出来
- class VIP_WordSearch(object):
- '''唯品会搜索'''
- def __init__(self,word):
- self.word = word
- self.baseurl = 'https://category.vip.com/ajax/getSuggest.php'
- self.headers = {
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
- 'Host':'category.vip.com',
- 'Referer':'https://category.vip.com/',
- }
- def get_results(self):
- t = time.time()
- info = {
- 'callback':'searchSuggestions',
- 'warehouse':'VIP_NH',
- 'keyword':self.word,
- '_':str(int(t*1000)),
- }
- html = requests.get(self.baseurl, params=info, headers=self.headers).text
- data = re.findall('search.*?\(({.*})\)',html)
- if data:
- data = data[0]
- else:
- data = None
- try:
- data = json.loads(data)
- results = data.get('data')
- last_results = []
- for each in results:
- product = {}
- product['word'] = each.get('word')
- product['goodscount'] = each.get('goodsCount')
- wordlist = each.get('props')
- if wordlist:
- words = ','.join([w.get('name') for w in wordlist])
- product['words'] = words
- else:
- product['words'] = ''
- last_results.append(product)
- except:
- last_results = None
- return last_results
复制代码
不同的地方在这里html = requests.get(self.baseurl, params=info, headers=self.headers).text
就是这个html,本地得到的是这样的网页https://category.vip.com/ajax/ge ... amp;_=1512382930556请求得到的,是一个类似的json格式
但是服务器上面就是是返回一个403
|
|