├── .gitignore ├── README.md ├── data.csv └── 1688.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 1688 2 | 模拟支付宝登录,爬取1688指定商品商户信息 3 | 4 | ### 运行环境 5 | - Mac系统,python2.7,把1688.py文件内的支付宝账号和密码修改为自己的账号密码即可。 6 | - 执行python 1688.py后,等待结果 7 | ### 文件说明 8 | - 1688.py: 爬虫主程序 9 | - datas.csv: 爬取的数据结果 10 | 11 | ### 作者博客:[http://www.yz1618.cn](http://www.yz1618.cn) 12 | ### 捐赠 13 | ![](http://image.yz1618.cn/default/677be07cca9645b2b22f6c6b6adddf6.png) 14 | 15 | ### 捐赠名单 16 | - 诺诺 5元 -------------------------------------------------------------------------------- /data.csv: -------------------------------------------------------------------------------- 1 | 企业名称,主页,产品,联系人,电话,手机,传真,地址,邮编 2 | 北海国盛祥珠宝有限公司,"https://gsxzb.1688.com, http://www.gsxzb.com","主营产品: 3 | 珍珠; 4 | 珍珠项链; 5 | 珍珠手链; 6 | 珍珠耳;",韦毅,86 0779 2053482,13768199233,0779 2064330,中国 广西 北海市海城区 北部湾东路东一巷1号,536000 7 | 深圳市荣振塑料制品有限公司,https://szrzslbz.1688.com,"主营产品: 8 | 塑料瓶; 9 | 塑料; 10 | 塑料壶; 11 | 塑料异形;",张雷,86 0755 23280585,18194085257,无,中国 广东 深圳市宝安区 公明办事处光明新区长圳长兴科技园20栋2楼,518000 12 | 余姚市宏诺吸塑制品厂,https://shop1379523775521.1688.com,"主营产品: 13 | 塑料加工; 14 | 吸塑包装; 15 | 宠物产品;",王德芳,86 0574 62578789,18658266065,86 0574 62578789,中国 浙江 余姚市 梁辉工业园区鸿运路7号,315400 16 | 北海市同珍堂珍珠制品有限公司,"https://tzt0779.1688.com, http://www.beihaitzt.com","主营产品: 17 | 海水珍珠养殖; 18 | 海水珍珠加工;",詹文雄,86 0779 8710558,13707794578,86 0779 3082700,中国 广西 北海市 南珠养殖基地,536000 19 | 广西北海市施福源珠宝有限公司,"https://shifuyuanzb.1688.com, http://https://shop1411750131827.1688.com/","主营产品: 20 | k金配件生产; 21 | 设计加工; 22 | 宝石镶嵌;",施善稳,86 0779 3069180,13877907098,无,中国 广西 北海市海城区 云南北路中国珍珠城二楼D区施福源,536000 23 | 深圳市惜妮珠宝首饰有限公司,"https://shop1463763409069.1688.com, http://www.xinizb.com","主营产品: 24 | 珍珠; 25 | 钻石; 26 | 海水淡水珠; 27 | 珍珠粉;",陈铭禧,86 0779 15007790363,无,无,中国 广西 北海市海城区 云南北路珍珠城,536000 28 | 北海凤仪阁珍珠有限公司,https://07798868.1688.com,"主营产品: 29 | 珍珠; 30 | 宝石; 31 | 玉器; 32 | 化妆品;",张祥凤,86 0779 3082778,18107798868,无,中国 广西 北海市海城区 云南路嘉莱假日公寓11楼,536000 33 | 诸暨贝塔珠宝有限公司,https://betapearl.1688.com,"主营产品: 34 | 戒指; 35 | 耳环; 36 | 项链; 37 | 吊坠; 38 | 手链;",何锋光,86 0575 87688978,15988209929,无,中国 浙江 绍兴市 诸暨市 山下湖镇华东国际珠宝城D0112,311800 39 | 诸暨市山下湖益生珍珠养殖场,https://esionpearl.1688.com,"主营产品: 40 | 各类天然珍珠项链、手; 41 | 颗粒裸珠;",石益生,86 0575 87680001,13967560322,86 0575 87680001,中国 浙江 诸暨市 山下湖益生珍珠加工贸易区,无 42 | 北海市海城区银宇珠宝店华美广场分店,https://shop1434702728511.1688.com,"主营产品: 43 | 海水珍珠; 44 | 淡水珍珠; 45 | 翡翠玉器; 46 | 贝类;",包基贺,86 0779 3058578,13907793405,86 0779 3058578,中国 广西 北海市海城区 四川南路华美广场1楼,536000 47 | 广州市奈真珠宝有限公司,https://shop1493193570197.1688.com,"主营产品: 48 | 925银珍珠首饰; 49 | K金珍珠首饰; 50 | 海水;",雷娟,86 020 13751773146,13751773146,无,中国 广东 广州市番禺区 市广路大罗塘珠宝城,51000 51 | 诸暨市山下湖镇千汇珍珠商行,https://qianhuipearl.1688.com,"主营产品: 52 | 珍珠饰品; 53 | 海水珍珠; 54 | 珍珠项链;",何锋光,86 0575 87680225,15988209929,86 0575 87681913,中国 浙江 诸暨市 华东国际珠宝城D0112,311800 55 | 诸暨市山下湖五千年珍珠商行,https://shop1444841587940.1688.com,"主营产品: 56 | 珍珠项链; 57 | 米形珍珠; 58 | 圆形珍珠; 59 | 海洋;",何元儿,无,13758584707,无,中国 浙江 诸暨市 诸暨市山下湖A饰,311800 60 | 深圳市南珠世家珍珠有限公司,"https://pearlage.1688.com, http://www.pearlage.com","主营产品: 61 | 北海南珠; 62 | 南洋珍珠; 63 | 大溪地黑珍; 64 | 淡水;",陈显卫,86 755 26938113,13823193604,86 755 26938113,中国 广东 深圳市罗湖区 贝丽南路金丽国际珠宝交易中心,518012 65 | 诸暨市山下湖国锋珠宝商行,https://shop1418748158507.1688.com,"主营产品: 66 | 珍珠项链; 67 | 珍珠耳钉; 68 | 珍珠粉; 69 | 南洋珠;",钱振辉,86 0575 13858513016,13858513016,86 0575 87689006,中国 浙江 诸暨市 山下湖镇华东国际珠宝城DA0901,311800 70 | 诸暨市山下湖珍弗尔珍珠商行,https://shop1433004730724.1688.com,"主营产品: 71 | 珍珠吊坠; 72 | 珍珠耳饰; 73 | 珍珠手链; 74 | 珍珠;",曾方伟,无,13567574690,无,中国 浙江 诸暨市 珍珠特色工业园,311804 75 | 诸暨市银生珍珠养殖有限公司,"https://yesonpearl.1688.com, http://yesonpearl.com","主营产品: 76 | 珍珠手链; 77 | 珍珠项链; 78 | 珍珠礼品;",周海萍,86 0575 87680221,13735313698,86 0575 87686280,中国 浙江 诸暨市 诸暨市山下湖珍珠加工园区银生珍珠,311804 79 | 诸暨市广聚珠宝商行,https://eternalpearl.1688.com,"主营产品: 80 | 珍珠项链; 81 | 珍珠戒指; 82 | 珍珠手链; 83 | 珍珠;",孙威,86 1885 8590819,18858590819,86 1885 8590819,中国 浙江 诸暨市 山下湖珍珠特色工业园区华东国际珠宝城南门广聚珠宝,310084 84 | 诸暨市绮丽珍珠首饰有限公司,"https://shop1361465795155.1688.com, http://www.qlpearl.com","主营产品: 85 | 珍珠; 86 | 珍珠饰品; 87 | 珍珠项链; 88 | 珍珠手;",周鲁永,86 0575 87683345,13575571328,86 0575 87683345,中国 浙江 诸暨市 诸暨市山下湖镇西斗门村,311804 89 | 诸暨市山下湖国裕珍珠商行,https://zjsxhgy.1688.com,"主营产品: 90 | 珍珠; 91 | 珍珠项链; 92 | 珍珠饰品; 93 | 南洋珠; 94 | 首;",石俊男,86 1356 7573820,13567573820,86 1356 7573820,中国 浙江 诸暨市 诸暨市山下湖华东国际珠宝城DA1202,311804 95 | 诸暨市华通珍珠有限公司,"https://huatongpearl.1688.com, http://shop1377104152146.cn.1688.com/","主营产品: 96 | 珍珠饰品; 97 | 珍珠项链; 98 | 手链; 99 | 戒指; 100 | 耳环;",何华通,无,13484331313,无,中国 浙江 诸暨市 山下湖镇,311804 101 | 诸暨市梦思珍珠有限公司,"https://mengsizhenzhu.1688.com, http://mengsizhenzhu .1688.com","主营产品: 102 | 天然淡水珍珠饰品;",李超群,86 0575 15968586628,15968586628,无,中国 浙江 诸暨市 国际珠宝城,311800 103 | 诸暨市海佳珍珠养殖有限公司,https://haijiapearl.1688.com,"主营产品: 104 | 养殖.珍珠; 105 | 加工销售; 106 | 批发零售; 107 | 网上;",周海亮,无,13567575274,86 0575 87686280,中国 浙江 诸暨市 山下湖珠宝路37号,311811 108 | 诸暨市栋哥珍珠商行,https://donggepearl.1688.com,"主营产品: 109 | 珍珠; 110 | 珍珠;",詹栋,86 0575 87631811,13567581211,无,中国 浙江 诸暨市 山下湖镇新桔城村湖心自然村409号,无 111 | 诸暨市山下湖卡蒂丝珠宝商行,https://shop1456245727469.1688.com,"主营产品: 112 | 珍珠饰品; 113 | 珍珠项链; 114 | 珍珠手链; 115 | 珍珠;",朱苏婷,86 0575 87686323,18368587929,无,中国 浙江 绍兴市 浙江诸暨市山下湖镇A饰珠宝,311800 116 | 诸暨市一米珍珠有限公司,https://shop1425981293117.1688.com,"主营产品: 117 | 天然珍珠饰品; 118 | 首饰包装; 119 | 天然淡水;",王李江,86 0575 87636785,13626752815,无,中国 浙江 诸暨市 山下湖华东珠宝城,311800 120 | 诸暨市山下湖珍琦珍珠养殖场,https://shop1447261868272.1688.com,"主营产品: 121 | 珍珠; 122 | 珍珠项链; 123 | 珍珠饰品;",何凯蔚,86 0575 88799560,18258557897,86 0575 88799560,中国 浙江 诸暨市 山下湖珍珠工业园区,311804 124 | 诸暨梵缇珠宝有限公司,"https://fantipearl.1688.com, https://shop1404320190624.1688.com/","主营产品: 125 | 珍珠养殖; 126 | 珠宝首饰; 127 | 珍珠首饰; 128 | 珍珠;",何颖,86 0575 87686323,15657527221,无,中国 浙江 诸暨市 山下湖,无 129 | -------------------------------------------------------------------------------- /1688.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | #encoding: utf-8 3 | 4 | from bs4 import BeautifulSoup 5 | from selenium import webdriver 6 | from selenium.webdriver.common.keys import Keys 7 | from selenium.webdriver.common.action_chains import ActionChains 8 | from fake_useragent import UserAgent 9 | # from http.cookiejar import CookieJar 10 | import http.cookiejar 11 | import time 12 | import urllib 13 | import sys 14 | import os 15 | import re 16 | import csv 17 | import random 18 | import importlib 19 | import codecs 20 | 21 | reload(sys) 22 | sys.setdefaultencoding('utf-8') 23 | 24 | item_name = '水壶' 25 | # 打开一个火狐浏览器 26 | driver = webdriver.Firefox() 27 | 28 | # 淘宝登录的url 29 | login_url = 'https://login.taobao.com/member/login.jhtml' 30 | # 淘宝用户名 31 | tb_username = '***' 32 | # 淘宝密码 33 | tb_password = '***' 34 | 35 | # 跳转到登录页面 36 | driver.get(login_url) 37 | # 找到登录框右上角的标志,J_Quick2Static是切换到用户名密码登录的界面 38 | quick_2_static = driver.find_element_by_id('J_Quick2Static') 39 | # 如果J_Quick2Static显示了,说明现在是二维码登录界面,点击切换用户名密码登录界面 40 | if quick_2_static.is_displayed(): 41 | quick_2_static.click(); 42 | # 等待随机时间,以免被反爬虫 43 | time.sleep(random.uniform(0, 1)) 44 | # 找到账号登录框的DOM节点,并且在该节点内输入账号 45 | driver.find_element_by_name('TPL_username').send_keys(tb_username) 46 | # 等待随机时间,以免被反爬虫 47 | time.sleep(random.uniform(1, 2)) 48 | # 找到账号密码框的DOM节点,并且在该节点内输入密码 49 | driver.find_element_by_name('TPL_password').send_keys(tb_password) 50 | # 等待随机时间,以免被反爬虫 51 | time.sleep(random.uniform(1, 2)) 52 | 53 | # 找到登录窗口滑动验证的方块 54 | slider_square = driver.find_element_by_id('nc_1_n1z') 55 | 56 | # 判断方块是否显示,是则模拟鼠标滑动,否则跳过 57 | if slider_square.is_displayed(): 58 | # 鼠标点击滑块并保持 59 | ActionChains(driver).click_and_hold(slider_square).perform() 60 | # 鼠标多次向右移动随机距离 61 | for i in range(0,5): 62 | ActionChains(driver).move_by_offset(random.randint(60,80), 5).perform() 63 | # 抬起鼠标左键 64 | ActionChains(driver).release() 65 | # 等待随机时间,以免被反爬虫 66 | time.sleep(random.uniform(0, 1)) 67 | 68 | # 找到账号登录框的提交按钮,并且点击提交 69 | driver.find_element_by_name('TPL_password').send_keys(Keys.ENTER) 70 | 71 | # 睡眠5秒,防止未登录就进行了其他操作 72 | time.sleep(10) 73 | #取得cookie 74 | driver.get_cookies() 75 | #cookie = [item["name"] + "=" + item["value"] for item in driver.get_cookies()] 76 | #cookiestr = ';'.join(item for item in cookie) 77 | #print(cookie) 78 | 79 | url = 'https://s.1688.com/company/company_search.htm?&keywords=' + urllib.quote(item_name) 80 | 81 | driver.get(url) 82 | 83 | # 新建一个data.csv文件,并且将数据保存到csv中 84 | csvfile = file('data.csv', 'wb') 85 | csvfile.write(codecs.BOM_UTF8) 86 | writer = csv.writer(csvfile) 87 | # 写入标题, 88 | writer.writerow(('企业名称', '主页', '产品', '联系人', '电话', '手机', '传真', '地址', '邮编',)) 89 | 90 | cnt = 0; 91 | # 总共有100页,使用for循环采集 92 | for page in xrange(1, 2): 93 | # 捕捉异常 94 | try: 95 | 96 | # 商户页面的url 97 | url = 'https://s.1688.com/company/company_search.htm?&keywords=' + urllib.quote(item_name) + '&beginPage=' + str(page) 98 | print(url) 99 | # 跳转到商户页面的url 100 | driver.get(url) 101 | if '异常' in driver.page_source: 102 | print('输入网页验证码') 103 | time.sleep(10) 104 | # 睡眠3秒,等待转到页面 105 | else: 106 | time.sleep(5) 107 | 108 | 109 | # 获取企业名称列表 110 | title = driver.find_elements_by_css_selector("a[class=list-item-title-text]") 111 | # 获取产品 112 | product = driver.find_elements_by_xpath("//div[@class=\"detail-float-items\"]") 113 | 114 | title_values = ['']*len(title) 115 | href_values = ['']*len(title) 116 | host_values = ['']*len(title) 117 | product_values = ['']*len(title) 118 | 119 | for i in range(len(title)): 120 | # 获取标题的值 121 | title_values[i] = title[i].get_attribute('title') 122 | #print(title_value) 123 | # 获取跳转的url 124 | titlehref = title[i].get_attribute('href') 125 | proto, rest = urllib.splittype(titlehref) 126 | host,rest = urllib.splithost(rest) 127 | host_values[i] = str(proto +'://' + host) 128 | href_values[i] = str(proto +'://' + host) + '/page/contactinfo.htm' 129 | #print(href_value) 130 | #print(href_value) 131 | # 获取经营范围 132 | product_values[i] = product[i].text 133 | 134 | for i in range(len(title)): 135 | #for i in range(2): 136 | print("第",cnt+1,"个商家") 137 | cnt = cnt + 1 138 | title_value = title_values[i] 139 | print(title_value) 140 | href_value = href_values[i] 141 | print(href_value) 142 | #print(href_value) 143 | # 获取经营范围 144 | product_value = product_values[i] 145 | 146 | # print(href_value) 147 | driver.get(href_value) 148 | 149 | html = driver.page_source 150 | 151 | #print(html) 152 | # if '网络环境有异常' in html: 153 | # print('输入网页验证码') 154 | # time.sleep(10) 155 | #print(html) 156 | # 进行信息匹配 157 | 158 | soup = BeautifulSoup(html, "html.parser") 159 | 160 | contact_name = soup.find(name = "a", attrs = {"class":"membername"}).string 161 | 162 | print(contact_name) 163 | 164 | info = soup.find(name = "div", attrs = {"class":"contcat-desc"}) 165 | 166 | if info == None: 167 | continue 168 | 169 | #print(info) 170 | 171 | data = ['','','','','',''] 172 | idx = 0 173 | for string in info.stripped_strings: 174 | if idx % 2 == 0: 175 | strstr = str(string) 176 | if strstr.startswith('电'): 177 | flag = 0 178 | elif strstr.startswith('移'): 179 | flag = 1 180 | elif strstr.startswith('传'): 181 | flag = 2 182 | elif strstr.startswith('地'): 183 | flag = 3 184 | elif strstr.startswith('邮'): 185 | flag = 4 186 | elif strstr.startswith('公'): 187 | flag = 5 188 | else: 189 | flag = 6 190 | else: 191 | if flag == 6: 192 | continue 193 | else: 194 | data[flag] = str(string) 195 | idx = idx + 1 196 | 197 | 198 | print(data[3]) 199 | 200 | # 判断公司主页,一个或者两个 201 | address1 = host_values[i] 202 | address2 = data[5] 203 | address = '' 204 | if address1 == address2 or len(data[5]) < 2: 205 | address = address1 206 | else: 207 | address = address1 + ', ' + address2 208 | 209 | # 判断电话 210 | if len(data[0]) <= 4: 211 | phone = '无' 212 | else: 213 | phone = data[0] 214 | 215 | # 判断手机 216 | if len(data[1]) <= 4: 217 | telphone = '无' 218 | else: 219 | telphone = data[1] 220 | 221 | # 判断传真 222 | if len(data[2]) <= 4: 223 | fax = '无' 224 | else: 225 | fax = data[2] 226 | 227 | # 判断地址 228 | if len(data[3]) <= 4: 229 | data[3] = '无' 230 | 231 | # 判断邮编 232 | if len(data[4]) <= 4: 233 | data[4] = '无' 234 | 235 | outdata = ( 236 | title_value, 237 | address, 238 | product_value, 239 | contact_name, 240 | phone, 241 | telphone, 242 | fax, 243 | data[3], 244 | data[4], 245 | ) 246 | #print(outdata) 247 | writer.writerow(outdata) 248 | 249 | except Exception as e: 250 | print('error') 251 | print(e) 252 | continue 253 | # 关闭csv 254 | csvfile.close() 255 | # 关闭模拟浏览器 256 | driver.close() --------------------------------------------------------------------------------