淘宝网上有很多商品,这些商品的信息就是一个很不错的数据来源,于是我参考资料后依葫芦画瓢弄了一个爬虫程序来爬一爬梦寐以求的电钢琴。

声明一下:电钢琴和电子琴是两种不同的琴,我在正则表达式里面设置了只要含有电子琴这个词语一律不抓取。同时淘宝商家的很多商品栏都是重复的,不加筛选前,我抓了1300个数据,其实只有40个左右不重复的数据。必须加名称不重复的筛选。

最近学了selenium,这个Python库可以用来模拟浏览器行为,我觉得这个库操作起来思路很清晰,就和人一样点击,下拉,只不过我们平常的这些动作对于程序就变成了一行行代码来去指示完成。

我针对了罗兰和雅马哈两个品牌进行了一定的分析,分别搜索“罗兰电钢琴”,“雅马哈电钢琴”分别得到了罗兰的全部数据,和雅马哈的前55页数据(综合排序下)。并且把这一部分数据保存到了mongoDB非关系型数据库里面。

如下图:

雅马哈电钢琴集合

罗兰电钢琴集合

然后呢,再通过左上角工具栏collection->export collecction进行导出,导出为csv文件,之后再用excel表格打开,就变成了下面这样的表格。

罗兰电钢琴抓取到了35个数据,雅马哈抓取到了60个数据,不筛选之前罗兰电钢琴30页有1300个数据,其实我仔细一看全是重复的,淘宝商家一样的东西挂了好几个商品栏,于是加了名称不重复筛选,结果只有35个。淘宝商家好样的。。。

我把数据都放过来了,大家如果有想买的可以简单参考一下。

罗兰电钢琴的数据

SUM是总交易额,这里顺便说一下,淘宝的付款人数是从当日往前推30天,就是近一个月。

我是按交易量来排序的。

4028410

SUM

price

deal

title

shop

location

843500

3500

241

Roland罗兰电钢琴FP-30FP30智能数码电钢88键重锤电子钢琴

爱乐乐器专营店

广东深圳

297500

3500

85

Roland罗兰电钢琴FP30智能数码88键重锤便携成人电子钢琴FP-30

roland罗兰皮优专卖店

北京

290500

3500

83

Roland罗兰fp30电钢琴数码钢琴88键重锤F20成人儿童仿真钢FP30

艾威乐器专营店

上海

189000

3500

54

Roland罗兰fp30电钢琴88键重锤专业成人家用初学者数码电子钢琴

律动乐器专营店

北京

248160

5280

47

Roland罗兰电钢琴RP102RP-302/501智能电钢成人初学数码钢琴

爱乐乐器专营店

广东深圳

237600

5280

45

Roland罗兰电钢琴rp102/302/50188键重锤专业成人初学者家用钢琴

roland罗兰皮优专卖店

北京

140000

3500

40

Roland罗兰电钢琴FP-30FP3088键重锤电子钢琴成人家用

roland罗兰悦聆专卖店

上海

175200

4380

40

Roland罗兰电钢琴RP30智能88键重锤智能成人儿童通用电子钢琴

君思乐器专营店

上海

129500

3500

37

罗兰电钢琴RolandFP30FP-30成人入门专业88键重锤数码电子电钢

世纪音缘乐器专营店

北京

108500

3500

31

Roland罗兰电钢琴FP30FP-30数码智能钢琴88键重锤成人电子钢琴

启源乐器专营店

广东广州

173710

5990

29

ROLAND罗兰电钢琴F140RRP102RP302RP501R88键重锤数码电钢琴

roland罗兰悦聆专卖店

上海

189360

7890

24

ROLAND罗兰电钢琴HP504HP603HP60588键重锤数码钢琴电钢琴

roland罗兰悦聆专卖店

上海

87600

4380

20

罗兰电钢琴88键重锤RP30专业数码钢琴成人电子钢琴初学者考级家用

和雅乐器专营店

广东深圳

61180

3220

19

ROLAND罗兰XPS10XPS30XPS-1030电子合成器61键电子琴编曲键盘

罗兰超音专卖店

广东深圳

95040

5280

18

Roland罗兰电钢琴RP30/RP102/RP501R蓝牙88键重锤智能电子钢琴

罗兰大佰专卖店

江苏南通

89760

5280

17

Roland罗兰电钢琴rp102/302/50188键重锤智能数码钢琴成人

罗兰超音专卖店

广东深圳

102570

7890

13

Roland罗兰高端电钢琴HP504HP605HP603电钢琴88键重锤家用

roland罗兰皮优专卖店

北京

151800

13800

11

吧主信誉罗兰ROLANDHP603ADP603重锤智能电钢琴数码钢琴

关维厚

北京

43800

4380

10

Roland罗兰电钢琴RP30RP-30数码智能钢琴88键重锤成人电子钢琴

启源乐器专营店

广东广州

47920

5990

8

Roland罗兰电钢琴RP302智能数码88键重锤带琴盖专业成人家用

知音乐器专营店

上海

55230

7890

7

顺丰Roland罗兰电钢琴HP504603605数码钢琴88键重锤电子钢琴

爱乐乐器专营店

广东深圳

21120

5280

4

吧主信誉ROLAND罗兰RP-102电钢琴RP102卡哇伊KDP110

关维厚

北京

21120

5280

4

Roland罗兰电钢琴rp102/302/50188键重锤专业成人初学者家用钢

和雅乐器专营店

广东深圳

23960

5990

4

ROLAND罗兰电钢琴RP102RP302RP501RF140R88键重锤数码电钢琴

聆悦乐器专营店

上海

10500

3500

3

Roland罗兰电钢琴FP30FP-30智能数码88键成人家用初学者电子钢琴

瑞立乐器专营店

上海

13140

4380

3

Roland罗兰电钢琴88键重锤rp30RP102专业成人初学家用电子电钢

世纪音缘乐器专营店

北京

24870

8290

3

Roland罗兰FP-60FP-90电钢琴FP60FP90数码钢琴蓝牙88键重锤麦克风

关维厚

北京

7000

3500

2

罗兰电钢琴FP30智能数码钢琴88键重锤电子钢琴成人儿童初学fp-30

扬威乐器专营店

浙江嘉兴

7000

3500

2

罗兰电钢琴RolandFP-30数码电子钢琴88键重锤进口蓝牙智能fp30

郑州豫华乐器专营店

河南郑州

10560

5280

2

Roland罗兰电钢琴RP102智能数码电子钢琴88键F140R初学家用RP302

艾威乐器专营店

上海

10560

5280

2

Roland罗兰电钢琴RP102RP302RP501立式数码钢琴88键重锤电钢

律动乐器专营店

北京

10560

5280

2

ROLAND罗兰电钢琴RP501RHP504数码电钢琴88键重锤RP302RP102

艾威乐器专营店

上海

11980

5990

2

罗兰电钢琴RolandRP-501R成人专业家用88键重锤电子电钢RP302

世纪音缘乐器专营店

北京

3500

3500

1

Roland/罗兰电钢琴FP3088键重锤智能电子钢琴成人家用

聆悦乐器专营店

上海

3500

3500

1

ROLAND罗兰电钢琴fp30智能数码电钢琴88键重锤专业成人罗兰fp30

龙圣乐器专营店

江苏南京

5280

5280

1

Roland罗兰电钢琴RP-102RP-302数码智能钢琴

启源乐器专营店

广东广州

5280

5280

1

罗兰RolandRP102RP302RP501RF-140R配重数码立式电钢琴

音域乐器专营店

广东广州

5990

5990

1

罗兰RP302Roland电钢琴智能数码钢琴88键重锤包邮

天堂鸟乐器专营店

陕西西安

6980

6980

1

Roland罗兰电钢琴F140RF-140R数码智能钢琴88键重锤电子钢琴

启源乐器专营店

广东广州

7890

7890

1

Roland罗兰高端电钢琴HP504HP603HP605电钢琴88键重锤数码钢琴

众乐乐器

湖北武汉

8290

8290

1

Roland罗兰电钢琴FP60/FP90便携式舞台钢琴成人专业智能电钢琴

roland罗兰皮优专卖店

北京

9900

9900

1

ROLAND罗兰F-130RFP-50FP-80HP-506HP-508RW数码电子钢琴电钢

espm2

江苏南京

14000

14000

1

Roland罗兰电钢琴FP-90fp90电钢琴FP-60舞台数码电钢88键重锤

爱乐乐器专营店

广东深圳

14000

14000

1

Roland罗兰电钢琴FP-90FP60电钢琴FP-50舞台数码电钢88键重锤

罗兰超音专卖店

广东深圳

14000

14000

1

顺丰Roland罗兰电钢琴FP-90fp90电钢琴舞台数码电钢88键重锤

亚伦乐器专营店

北京

0

3490

0

罗兰mp100mp-100电钢琴电钢Roland数码钢琴电子钢琴

博联盛艺乐器商城

北京

0

3490

0

实体现货罗兰ROland新款电钢琴MP100MP100秒P105PX150包邮

广州两小节乐器

广东广州

0

3500

0

Roland罗兰FP-30FP30智能数码电子钢琴88键重锤蓝牙智能款FP30

roland_bj

北京

0

4000

0

二手电钢琴原装日本罗兰ROLANDFP-288键进口电子钢琴键盘琴

爱笛声琴行

上海

0

4980

0

新款ROLAND罗兰电子数码钢琴RP-501R88键重锤电钢琴RP301升级302

龙圣乐器专营店

江苏南京

0

5980

0

现货罗兰电钢琴RP-401R电子钢琴88键重锤数码钢琴RP301升级电钢

海都乐器企业店

四川成都

0

5990

0

罗兰Roland电钢琴RP501R/RP-302电子数码钢琴88键重锤电钢包邮

蒙特丽乐器专营店

上海

0

7300

0

Roland/罗兰电钢琴RP401R数码钢琴88键重锤电子钢琴

wdmzsytl

北京

0

19800

0

RolandRD-300NXRD-800RD-2000罗兰电钢琴舞台数码钢琴

讴唱乐器专营店

福建厦门

0

19800

0

【乐音中国】Roland/罗兰电钢琴RD-2000舞台便携88键盘重锤RD2000

musicpcm

北京

0

19800

0

日产罗兰RolandRD-300NX/2000V-PIANO88键盘数码舞台电钢琴

音域乐器专营店

广东广州

0

22800

0

罗兰RolandLX-17LX-7舞台电钢琴88键数码钢琴lx17lx7新款

亚伦乐器专营店

北京

0

22800

0

现货Roland罗兰LX-1788键rolandlx-7舞台电钢琴LX17数码钢琴

roland罗兰右任之声专卖店

北京

0

39800

0

RolandV-Piano罗兰家庭/舞台电子数码钢琴正品包邮

讴唱乐器专营店

福建厦门

0

128000

0

Roland罗兰电钢琴GP-7三角钢琴V-PianoGrand88键重锤数码钢琴

众乐乐器

湖北武汉

4028410

下面这个是雅马哈电钢琴的交易记录

SUM

price

deal

title

shop

location

2858289

3117

917

雅马哈电钢琴P-125B/115WH电子数码钢琴成人初学专业88键重锤电钢

yamaha雅马哈艺可专卖店

上海

3690431

4799

769

顺丰YAMAHA雅马哈YDP103R数码88键重锤带盖进口立式智能电子钢琴

yamaha雅马哈大佰专卖店

江苏南通

233775

3117

75

新品雅马哈P-125B125WH成人儿童88键重锤数码电子钢琴P115升级款

yamaha雅马哈大佰专卖店

江苏南通

279251

5699

49

雅马哈电钢琴YDP-143R电子钢琴数码钢琴88键重锤成人专业顺丰包邮

吉利乐器专营店

安徽合肥

115168

3599

32

雅马哈KBP2000电钢琴88键重锤数码钢琴KBP1000智能钢琴电子钢琴

亚伦乐器专营店

北京

129573

4799

27

雅马哈电钢琴YDP-103R专业88键重锤成人家用初学智能电子数码钢琴

广州知音乐器专营

广东广州

93574

3599

26

雅马哈电钢琴KBP-1000/2000初学者家用88键重锤专业成人电子钢琴

郑州豫华乐器专营店

河南郑州

990000

45000

22

日本原装进口二手三角钢琴专业演奏成人家用初学者雅马哈C3三角琴

qiqi926308

上海

95980

4799

20

雅马哈电钢琴YDP-103R数码钢琴88键重锤成人专业顺丰入户安装

yamaha畅想专卖店

陕西西安

59223

3117

19

雅马哈P-125B125WH智能成人儿童88键重锤数码电子钢琴P115升级款

国乐乐器专营店

江苏南通

96883

5699

17

雅马哈电钢琴YDP-143立式家用成人专业电子88键重锤YDP142电钢

世纪音缘乐器专营店

北京

105000

7000

15

雅马哈数码电钢琴YDP-163舞台演奏智能88键重锤专业成人电子钢琴

哝哝qq1024209412

上海

79786

5699

14

印尼进口雅马哈电钢琴YDP143b电子钢琴88键重锤数码钢琴YDP-143wh

扬威乐器专营店

浙江嘉兴

238000

17000

14

日本原装雅马哈二手钢琴初学者儿童成人家用立式YAMAHAU1H/U3H

斩月9100

上海

68388

5699

12

雅马哈电钢琴YDP-143BYDP143/88键重锤立式家用专业成人电子钢琴

广州知音乐器专营

广东广州

34287

3117

11

雅马哈电钢琴P-115BP-125WH成人初学智能专业数码钢琴88键重锤

音乐琴乐器专营店

湖北武汉

84150

7650

11

雅马哈电钢琴YDP-163成人专业家用数码88键重锤电子电钢162升级款

世纪音缘乐器专营店

北京

84150

7650

11

雅马哈电钢琴YDP-163电子钢琴数码钢琴88键重锤成人专业顺丰包邮

吉利乐器专营店

安徽合肥

277200

25200

11

日本原装进口雅马哈二手钢琴YAMAHA/UX/UX-1/UX3高端演奏立式钢琴

sa鲜橙多

上海

180600

25800

7

二手钢琴日本原装进口雅马哈YAMAHAUX初学考级练习立式钢琴

古月懿轩

上海

19800

3300

6

雅马哈电钢琴P115BP-125WH成人初学专业电子数码钢琴88键重锤

yohoz

河北石家庄

17085

3417

5

雅马哈电钢琴P125B/P-125WH数码电子钢琴88键重锤P105/P115升级

星辉震东乐器专营店

北京

28495

5699

5

雅马哈88键重锤电钢琴键成人家用立式数码钢琴原装进口YDP143B/R

海都乐器专营店

四川成都

125000

25000

5

日本原装进口雅马哈YAMAHAU1A/U2A/U3A成人初学家用立式二手钢琴

sunliteagle

上海

22796

5699

4

Yamaha/雅马哈电钢琴智能数码钢琴88键重锤142升级电钢琴YDP-143

音乐琴乐器专营店

湖北武汉

22796

5699

4

顺丰雅马哈YDP-143B/143R数码电钢琴88键重锤成人家用初学者入门

雅马哈侨辉专卖店

上海

75200

18800

4

钢琴成人家用雅马哈u3h二手立式钢琴专业级雅马哈钢琴儿童初学者

郭峰钢琴有限公司

上海

107200

26800

4

【直播选琴】日本二手原装进口雅马哈立式钢琴YAMAHAUX立式黑

漂泊的懒虫

上海

53400

17800

3

日本原装进口雅马哈立式初学者儿童YAMAHAU3H成人家用真二手钢琴

福建弘成乐器有限公司

福建厦门

65400

21800

3

日本原装进口雅马哈YAMAHAU1M/U2M/U3M成人初学家用立式二手钢琴

sunliteagle

上海

47200

23600

2

钢琴专业级立式钢琴雅马哈yusyuxyuayu1雅马哈钢琴儿童初学者

郭峰钢琴有限公司

上海

3800

3800

1

YAMAHA雅马哈电钢琴KBP500KBP1000KBP200088键重锤数码

贵妃小姐

上海

4799

4799

1

新款雅马哈电钢琴YDP-103R数码钢琴88键重锤成人专业演奏

海川乐器专营店

浙江金华

23500

23500

1

二手钢琴雅马哈YAMAHA钢琴UX/UX1/UX2/UX3/UX5初学者成人家用立式

斩月9100

上海

25800

25800

1

【直播钢琴】日本原装进口雅马哈二手钢琴U3M专业演奏立式钢琴

sa鲜橙多

上海

10435979

从上表中可以看书,雅马哈比罗兰的知名度高得多。雅马哈总共有100多页,但是罗兰电钢琴搜索出来只有30页,雅马哈在综合排序的前50页总共有35中电钢琴,但是罗兰在前30页有60种,但是这60种全部加起来的交易额还不到雅马哈35种电钢琴交易额的一半。

然后csv文件可以导入matlab,再用table2array函数进行转换,否则画不了图!

然后把价格一样的,店铺门面不同,销量算在一起,销售额。

用下面这个代码:

roland_reserve=zeros(60,3);

a=1;

for i=1:60

if find(roland_reserve(:,2)==roland(i,2))

roland_reserve(a,1)=roland(i,1)+roland_reserve(a,1);

roland_reserve(a,3)=roland(i,3)+roland_reserve(a,3);

else

roland_reserve(a,2)=roland(i,2);

roland_reserve(a,1)=roland(i,1);

roland_reserve(a,3)=roland(i,3);

a=a+1;

end

end

然后再用下面这个代码,用bar函数画直方图,plot函数画连线图:

bar(yamaha_reserve(1:20,2),yamaha_reserve(1:20,1),20,'b')

for i=1:3

text(yamaha_reserve(i,2),yamaha_reserve(i,1),...

{[ num2str(yamaha_reserve(i,2)),' ',num2str(yamaha_reserve(i,1))]});

end

hold on

bar(roland_reserve(1:20,2),roland_reserve(1:20,1),200,'r')

for i=1:3

text(roland_reserve(i,2),roland_reserve(i,1),...

{[ num2str(roland_reserve(i,2)),' ',num2str(roland_reserve(i,1))]});

end

%

% plot(yamaha_reserve(1:20,2),yamaha_reserve(1:20,1),'-ob')

% for i=1:3

% text(yamaha_reserve(i,2),yamaha_reserve(i,1),...

% {[ num2str(yamaha_reserve(i,2)),' ',num2str(yamaha_reserve(i,1))]});

% end

% hold on

% plot(roland_reserve(1:20,2),roland_reserve(1:20,1),'-*r')

% for i = 1:3

% text(roland_reserve(i,2),roland_reserve(i,1),...

% {[ num2str(roland_reserve(i,2)),' ',num2str(roland_reserve(i,1))]});

% end

得到了下面这些图表:(横坐标是价格,纵坐标是销售量和销售额)

销售量图表:

销售额图表:

蓝色是雅马哈电钢,红色是罗兰电钢,明显无论从销售额还是销售量上来讲,雅马哈都要多得多。

买一台中等价位(价格的中位数)的雅马哈电钢大概是 17400元

median(yamaha_reserve(1:20,:))

买一台中等价位的罗兰电钢大概是 7140元

(median(roland_reserve(1:20,:)))

这是由于淘宝网上廉价罗兰往往卖得好,贵的罗兰卖得不好,所以在综合排序的时候,前面会抓取到很多的廉价罗兰。但是雅马哈的名气大一些,所以综合排序前面也会抓取到一些比较贵的雅马哈,那么自然中位数就上去了。罗兰的中位数被很多的廉价给扯下去了,但罗兰的中位数更准确,因为爬虫抓取到了所有30页的罗兰电钢数据。

同时近一个月以来:

罗兰总销售额4028410罗兰电钢只有四百多万。

雅马哈总销售额10435979!!!雅马哈近一个月交易额竟然有一千多万,中国人这么喜欢吗?

但是

但是

但是

我还是喜欢罗兰电钢!

猴哥V5!!!!

猴哥猴哥V5!!!!

猴哥猴哥猴哥V5!!!!

rolling girl  B站链接:

https://www.bilibili.com/video/av2391877?from=search&seid=17696750908259767803

(B站迟早会去光顾的,嘿嘿嘿)

代码解析:

import re
from selenium.common.exceptions import TimeoutException  # 时间溢出异常

from urllib.parse import quote  # 把输入的参数转化进行编码,转化为url可以接受的参数。
from pyquery import PyQuery as pq

from selenium.webdriver import *  # 所有浏览器都引进来
from selenium.webdriver.common.by import By  # 解析方式 from selenium.webdriver.common.by.By import *也行
from selenium.webdriver.support import expected_conditions as EC  # 期望情况的判断
from selenium.webdriver.support.wait import WebDriverWait  # 显式等待
import pymongo#引入数据库的库

from bs4 import BeautifulSoup#引入“美味的汤”

chrome_options = ChromeOptions()#chrome浏览器的选项初始化
chrome_options.add_argument('--headless')#进行无界面的设置,这里必须要分开才行,这里返回的不是chrome_options,只是通过函数进行相关设置。
browser = Chrome(chrome_options=chrome_options)#将设置付诸行动,建立浏览器
# browser=Chrome()
wait = WebDriverWait(browser, 2.5)#调用webdriver的类进行显式等待的设置。

KEYWORD = '雅马哈电钢琴'
MONGO_URL = 'localhost'#本地的地址,用来连接
MONGO_DB = 'taobao'#数据库的名字
MONGO_COLLECTION = 'yamaha'#集合的名字
client = pymongo.MongoClient(MONGO_URL)#建立连接
database = client[MONGO_DB]#建立数据库
database[MONGO_COLLECTION].drop()#清除原来的数据,drop掉原来的表

def index_page(page):
   """
   抓取当前索引页
   不返回任何值
   """
   print('正在爬取第', page, '页')
   try:
      url = 'http://s.taobao.com/search?q='+quote(KEYWORD)
      browser.get(url)
      if page > 1:
         input = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager div.form > input'))
         )
         submit = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager div.form > span.btn.J_Submit'))
         )
         input.clear()
         input.send_keys(page)
         submit.click()
      wait.until(
         EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager li.item.active > span'), str(page))
      )#判断str(page)是否在
      print('first_success')
      wait.until(
         EC.presence_of_element_located((By.CSS_SELECTOR, '.m-itemlist .items .item'))
      )
      get_products(browser)
      print('second_success')
   except TimeoutException:
      index_page(page)#传入页面的页码进行解析

def get_products(browser):
   html = browser.page_source
   doc = pq(html)  # 运用pyquery将网页解析
   items = doc('#mainsrp-itemlist .items .item ').items()#运用pyquery的items方法将返回的集合进行单个分解,成为generator迭代器,从而可以通过for循环进行输出
   for item in items:
      # print(type(item))输入为generator
      soup = BeautifulSoup(item.html(), 'lxml')#这里为了解析出价格,采用了bs方法,pyquery解析库解析不出来
      product = {
         'image': item.find('.pic .img').attr('data-src'),#图片链接
         'price': float(soup.find(name='strong').string),#价格链接
         'deal': int(re.sub('[^1234567890]','',item.find('.deal-cnt').text())),#成交数量
         'title':re.sub('\s','',item.find('.title').text()),#商品名字
         'shop':re.sub('\s','',item.find('.shop').text()),#店铺名字
         'location': re.sub('\s','',item.find('.location').text())#地点
      }
      #以上内容有些用正则表达式进行去掉空格操作,交易数采用了去掉数字操作。
      # print(product)
     
      condition = database[MONGO_COLLECTION].find_one({'title': product['title']})#查询是否有一样的数据
      if not condition :#如果没有一样的数据
         if not re.match('电子琴',product['title']):#并且商品名字中没有包含电子琴
            if product['price']>=3000:#并且商品的价格必须大于等于3000
               save_to_mongo(product)#存储到数据库中
               print(product['price'])#将商品价格打印出来
      else:
         print("the same!")#其余情况,打出the same进行标识。

# mongo_db数据库保存

def save_to_mongo(result):
   """
   保存到mongodb
   :param result:
   :return:
   """
   try:
      if database[MONGO_COLLECTION].insert(result):
         print('mongo_db succeed!')
   except Exception:  # except Exception是所有异常通用的写法,没有具体指定
      print('mongo_db fail!')

global i#将页码设置为全局变量,先声明,再赋值,这是规矩。
i=0#将i初始化

def main():
   global i
   if database[MONGO_COLLECTION].find().count()<100:#查询数据库中的数据如果小于100,那么就继续进行抓取,否则取消
         i+=1
         index_page(i)
   else:
      print('done!')#如果达到100数据则打印出done
      return 0

while(1):
   main()

# while(database[MONGO_COLLECTION].find().count()<100):
#  main()
#这样写更好

爬虫/excel/matlab总结笔记:

1、

css选择器 .item 对于有多个class属性的标签:比如class=”item abc”,只要其中一个是item就能选择到

2、

“.item.abc”,表示选取class既含有item,也含有abc的标签,如上所示。

“#mainsrp-itemlist .items .item”(有空格表示有子孙关系,只要含有就行,不一定是父子关系)

3、

div.form class属性为form的div节点

4、

div.form > span.btn.J_Submit (>表示之后的子节点)

5、

doc=pq(html)

lis=doc(“li”).items() 满足之前表达式的所有节点

li是tag_name

6、

lis=doc(“li”).items()的类型<class 'generator'>迭代器,这个不能用text()方法,只有Pyquery类型能用

7、

find()方法查找所有的子孙节点,对于Pyquery类来说

8、

text()方法不需要遍历就可以获取,html()需要全部遍历才行。

doc('#mainsrp-itemlist ')

比如li.text(),li是li元素的一个列表,但是他的类型还是<class 'pyquery.pyquery.PyQuery'>,这样引用text()方法是可以的,但是html()必须要进行如下的循环遍历

for li_item in li

print(li_item.html())

9、product={
   'image':item.find('.pic .img').attr(),
   'price':item.find('.price').text(),
   'deal':item.find('.deal-cnt').text(),
   'title':item.find('.title').text(),
   'shop':item.find('.shop').text(),
   'location':item.find('.location').text()
}

text()方法对于换行符之类的不会忽略。第一个和最后一个换行符会替换。

10、

正则表达式测试http://tool.oschina.net/regex/

正则表达式去除/n/t

11、

用selenium模拟浏览器行为的时候

网上的答案:一般遇到click失败时我的一般处理方法是改用send_keys(Keys.ENTER),直接用发回车键,简单粗暴。

12.

CSS选择器只要加了标签名就发现不行了。真的不知道是为什么,晕了好久。

div.mainsrc-xyz不行,但是只有.mainsrc-xyz就行

items = doc('#mainsrp-itemlist .items .item ').items()

但是items = doc(‘div#mainsrp-itemlist .items .item ').items()就不行了,从html分析上来说是绝对可行的。以后遇到没有class和id属性的标签最好不要用Pyquery,去喝美味的汤。beautiful soup

strong仅仅抓价格,beautifulsoup行得通,xpath行得通,但是pyquery的css选择器方式find(‘strong’)就是不行。

过了过了,不说了。

13

要熟悉正则表达式啊。

查书P140 崔庆才

\w 匹配字母、数字、下划线

\W 匹配不是字母、数字、下划线

\s匹配任意空白字符

\S 匹配不是。。。

\d匹配任意数字

\D匹配不是。。。

[^...]匹配不是...的内容

正则表达式可以匹配中文内容!!!’中文’OK

14、替换字符串

import re

re.sub('\s',  ''  ,item.find('.location').text())(将换行符什么的空白替换为NONE)

15、匹配字符串

re.match(‘正则表达式’,content)

excel16、=C2*D2直接在excel表的空格里面写函数表达式就行了!

matlab17、直方图函数bar(x,y,100(条形的宽度),’r’(颜色是红色))

matlab18

median(A,1)列的中位数

median(A,2)行的中位数

matlab中位数函数

明天我试着开始爬一爬彩票的数据了。嘿嘿嘿!

中间碰到pyquery无法继续在div标签下解析strong标签的bug,卡了很久,然后下载chromedriver来启动chrome浏览器由于版本问题纠结很久,最后才发现···自己没写main()主函数,浪费了3个小时···python的库很多,每次调用都感觉很神奇,内部是怎么实现的只能稍微猜一猜,至于是什么还是不要去深究了。

python爬虫爬取淘宝,罗兰电钢琴和雅马哈电钢琴(参考崔大)相关推荐

  1. 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程

    项目内容 本案例选择>> 商品类目:沙发: 数量:共100页  4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...

  2. 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫,本人还是入门级的小白,自己跟着老师写了一些代码,算是自己的总结,还有一些心得,跟大家分享一下,如果不当,还请各位前辈斧正. 这是代码: # 导入库 import requests im ...

  3. python爬虫 — 爬取淘宝商品信息

    (一)确定需要爬取的信息 在爬取前首先确定需要获取的信息,打开taobao,在搜索框中输入,需要获取的商品的信息,比如ipad,点击搜索 就可以看到许多的ipad,选择其中的一款商品,比如第一个 可以 ...

  4. python爬虫爬取淘宝商品并保存至mongodb数据库

    使用工具介绍 python3.8 selenium(请确保你已经成功安装了谷歌驱动chromedriver) mongodb数据库 mongo-compass 谷歌浏览器 分析请求链接 打开淘宝首页的 ...

  5. python爬虫 爬取淘宝搜索页面商品信息数据

    主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 以下是源代码: #!coding=utf- ...

  6. Python爬虫爬取淘宝、天猫某商品页面相关信息实例

    一.爬取天猫店铺的相关信息 URL="https://detail.tmall.com/item.htm?spm=a230r.1.14.8.4a1a115fb1rHn5&id=617 ...

  7. python爬虫爬取淘宝网页

    首先进行相关的分析 要想爬取相关的信息,必须指导如下信息: 1.访问接口 2.翻页操作 首先进行搜索,得到相关的网址:https://s.taobao.com/search?q=书包&imgf ...

  8. 使用python爬虫——爬取淘宝图片和知乎内容

    本文主要内容: 目标:使用python爬取淘宝图片:使用python的一个开源框架pyspider(非常好用,一个国人写的)爬取知乎上的每个问题,及这个问题下的所有评论 最简单的爬虫--如下pytho ...

  9. 网络爬虫爬取淘宝页面商品信息

    网络爬虫爬取淘宝页面商品信息 最近在MOOC上看嵩老师的网络爬虫课程,按照老师的写法并不能进行爬取,遇到了一个问题,就是关于如何"绕开"淘宝登录界面,正确的爬取相关信息.通过百度找 ...

最新文章

  1. 内存泄漏分析 mat 使用 activity泄漏
  2. 数据库查询速度极慢【个人工作问题解决过程记录】
  3. oracle10数据库导入导出问题
  4. Zookeeper集群角色分配原理
  5. 数据结构之算法初涉(2)
  6. python 变量只用一次_Python变量72般变化,只需掌握4点,就可万变不离其宗
  7. QT5.9的安装和配置
  8. marshmallow——自定义类型
  9. 谷粒商城 高级篇 (十四) ---------- 商品详情
  10. 【字典树】字典树的创建(入门详细介绍)
  11. std::stable_sort 和 std::for_each 的用法!按结构中某一字段值大小排续!
  12. 开源一个win10二十四节气壁纸自动更换的程序
  13. 查看mysql缓存命中_【转】MySQL如何检查缓存命中
  14. 初学Redis最清晰完整的教程
  15. Android 音频源码分析——音量调节流程
  16. html代码圣诞贺卡图片,自制圣诞贺卡图片大全
  17. 使用EndNote导出GB/T 7714—2015格式的参考文献
  18. PLC SECS/GEM解决方案,设计与应用
  19. 金蝶K3登录后提示“你的金蝶标准支持服务已到期”补丁修复
  20. java吃货联盟app讲解_Java吃货联盟订餐系统代码实例

热门文章

  1. Xcode9.2 添加iOS11.2以下旧版本模拟器
  2. jprofiler安装和配置
  3. 重磅!德勤TMT行业2019十大预测,遍地黄金的中国机会
  4. python入门电子版-Python3零基础教材电子书合集
  5. 蓝桥杯java初赛本科组,2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题...
  6. InSAR基础知识与心得
  7. OSChina 周四乱弹 ——盘点安全圈都有哪些又酷又萌的妹子
  8. 公司注册资金要实缴吗
  9. 如何给对话框添加背景图片及图片按钮CBUttonST
  10. 常用计算机设备教案,办公室常用设备教案——计算机办公设备(计算机的应用和发展)01.docx...