Python抓取淘宝某商品购买过用户

以前做某产品时,想了一大堆的推广思路,因为跟销售有关,淘宝上又有很多的同类商品,所以准备抓一下购买竞争产品的淘宝用户,从中挖地点人,遂有了一下的脚本,做的比较粗糙,只是为了满足当时的需要,后期没有在进行细致维护,因为后来发现这条路子不通..淘宝没有接口能直接发旺旺信息,如果模拟来做的时候,大部分用户还必须先加为好友,还有旺旺每天只能加50个好友….

如果需要小批量推广,或者你有大把的时间,你可以尝试一下用这个思路推广。

说远了,这篇主要介绍如何抓取,这个脚本是从某宝贝页面的的用户评价处抓取的淘宝(旺旺)昵称,淘宝中,很多的时候都是通过前端的请求通过ajax去后端取数据,的,这个评价也不例外,SO,我们不用去加载宝贝页面那么庞大的信息,直接访问他的接口来数据就行了。然后通过正则匹配一下昵称,再去掉哪些隐藏成*号的昵称,然后入库。OK。

这个脚本是要连库的,一个两个表,nickname,抓取后的昵称存放在这里,turl,抓取的淘宝页面地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE `nickname` (
`id` int(11) NOT NULL auto_increment,
`nickname` varchar(20) NOT NULL,
`status` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE `turl` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(100) NOT NULL,
`status` int(11) NOT NULL default '0',
PRIMARY KEY (`id`,`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

INSERT INTO `turl` (`id`, `url`, `status`) VALUES
(1, 'http://item.taobao.com/item.htm?spm=a230r.1.14.39.bCLNR9&id=20220156709', 0)

天猫的产品页面没测试,C店的没问题,如果测试时上面的URL失效了,那就自己再去招一个吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import MySQLdb
import urllib
import sys
import re
import threading
class GetUInfo(threading.Thread):
url = ""
def __init__(self,url):
threading.Thread.__init__(self)
self.url = url

def run(self):
self.get_user_info()

def stop(self):
self.thread_stop = True

def urlpares(self,url):
page=urllib.urlopen(url)
contents=page.read()
userNumIdT = re.compile(r'userid=(.*?);')
auctionNumIdT = re.compile(r'itemId:"(.*?)"')
userNumId = userNumIdT.findall(contents)
auctionNumId = auctionNumIdT.findall(contents)
ret = [userNumId[0],auctionNumId[0]]
return ret

def catch(self,userNumId,auctionNumId,i):
url='http://rate.taobao.com/feedRateList.htm?userNumId='+userNumId+'&auctionNumId='+auctionNumId+'&currentPageNum='+str(i)
page=urllib.urlopen(url)
json_object=page.read()
return json_object

def get_user_info(self):
ret = self.urlpares(self.url)
print ret
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='',db='taobao')
cursor = conn.cursor()
cursor.execute('set names gbk')
i=1
while(1>0):
json_object = self.catch(ret[0],ret[1],i)
print "----- Catch Page "+str(i)+" -----"
i=i+1
if json_object.find('"comments":null')>0:break;
jsonvo=json_object.split('"nick":"')
for vo in jsonvo:
jsonvo2=vo.split('","nickUrl"')
for vo2 in jsonvo2:
if vo2.find("***")<0:
if len(vo2) 0):
print "We Have"
else:
print vo2
sql = "insert into taobao.nickname(nickname,status) value('"+vo2+"',0)"
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()

def letsgo():
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='taobao')
cursor = conn.cursor()
cursor.execute("select * from taobao.turl where status = 0")
ulist = cursor.fetchall()
for u in ulist:
thread = GetUInfo(u[1])
thread.start()
cursor.execute("update taobao.turl set status = 1 where id = "+str(u[0]))
conn.commit()
cursor.close()
conn.close()

letsgo()

运行效果: