推广 热搜: 行业  机械  设备    系统  教师  经纪  参数    蒸汽 

基于python爬虫技术对于淘宝的数据分析的设计与实现

   日期:2024-11-10     移动:http://changmeillh.xhstdz.com/mobile/quote/63067.html

本文主要介绍通过 selenium 模块和 requests 模块,同时让机器模拟人在浏览器上的行为,登录指定的网站,通过网站内部的搜索引擎来搜索自己相应的信息,从而获取相应关键字的商品信息,并进而获取数据,然后通过csv模块将数据存储到本地库中,接着在通过pandas、jieba、matplotlib 等模块进行分析,得出数据的特征。

基于python爬虫技术对于淘宝的数据分析的设计与实现

本章对本系统设计的功能性需求和非功能性需求进行了详细的分析。把系统所需要的模块进行了整理和划分,明确了各个功能的需求。

设计任务:完成一个基于爬虫的网络页面和数据分析

(1)访问功能:使用爬虫进行页面访问。

(2)查询功能:运用程序在页面上进行自动关键字查询。

(3)爬取功能:对于页面上的信息进行过滤和针对化的爬取。

(4)存储功能:对于信息进行本地化的存储,将爬取数据保存至csv文件内。

(5)数据分析功能:对于本地化数据进行数据分析和数据展示。

构建HTTP伪装

这是针对 Selenium WebDriver 的 ChromeDriver 来设置的一组浏览器参数,以在爬取网站时提高程序稳定性和安全性。这些参数的主要作用如下

1. '--disable-extensions':禁用 Chrome 扩展,避免插件对页面渲染产生影响。

2. '--disable-blink-features=AutomationControlled':禁用自动控制特性,避免被目标网站检测到使用了自动化爬虫。

3. '--no-sandbox':关闭 Chrome 浏览器的沙盘机制,提高程序的运行速度。

4. '--disable-dev-shm-usage':禁用 '/dev/shm' 临时文件系统,可避免程序因为内存不足而崩溃。

5. '--disable-gpu':禁用 GPU 硬件加速,减少程序资源占用。

6. '--start-maximized':开启浏览器最大化窗口模式,优化用户体验。

7. 'add_experimental_option('excludeSwitches', ['enable-automation'])':禁用自动化开关,并防止目标网站检测到 WebDriver 的使用情况。

8. 'add_experimental_option('useAutomationExtension', False)':禁用自动化扩展功能,避免被目标网站检测到使用了自动化爬虫。

9. '--user-agent':指定浏览器的 User-Agent,在请求目标网站时伪装成一个正常的浏览器访问,避免被目标网站检测到使用了自动化爬虫。

10.'chrome_options.add_argument("--proxy-server=http://{}".format(proxy_address))' 这行代码可以在使用Selenium自动化测试时配置代理服务器。具体来说'chrome_options' 是chrome浏览器的选项对象'add_argument()' 方法是向该选项对象中添加参数的方法。

其中, '--proxy-server' 是Chrome浏览器的一个参数,用来设置代理服务器地址。代理服务器地址一般包括 IP 地址和端口号,这里的 'proxy_address' 就是一个包含IP地址和端口号的变量。

使用格式化字符串 '"{}'".format(proxy_address)' 将代理服务器地址插入到参数字符串中,最终生成一个完整的代理服务器地址,然后将其作为参数传递给 'add_argument()' 方法。

这样,启动 Chrome 浏览器时,就会按照传入的代理服务器地址来进行网络请求,并通过该代理服务器获取网页内容。这在需要匿名爬取数据或测试一些需要使用代理的网站时非常有用。

这些设置是为了在爬取目标网站时提高程序稳定性、安全性和隐蔽性。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

 

 

 

   

 

模拟登录

使用 Selenium WebDriver 实现淘宝网站登录的 Python 函数。其主要实现逻辑如下

1. 跳转到淘宝登录页面:利用 WebDriver 打开淘宝网站登录页面。

2. 输入账号和密码:使用 'find_element_by_id' 方法找到对应的元素并输入对应的账号和密码。

3. 登录验证:等待用户输入验证码,并点击登录按钮进行验证。如果登录成功,则返回登录成功的浏览器实例,否则打印错误信息并关闭浏览器,返回 None。

该函数仅作为示例参考,在实际爬虫开发中需结合目标网站的特定情况进行调整和优化。

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

 

 

 

 

 

 

 

信息爬取

使用 Selenium WebDriver 实现淘宝网站商品爬取的 Python 函数。主要实现逻辑如下

1. 通过 'driver.get()' 方法打开淘宝网站搜索页,并使用通过让程序进行暂停操作逃逸反爬虫检测'time.sleep()' 方法等待网页数据加载完成。

2. 使用 'driver.find_elements_by_xpath()' 方法找到页面上所有需要爬取的商品元素,遍历每个元素,并使用 'find_element_by_xpath()' 方法定位元素中需要爬取的信息。

3. 将爬取到的数据存储为字典格式,并添加到 data 列表中。

4. 如果在遍历过程中出现异常情况,将错误信息打印到控制台。

5. 打印当前已完成的页面数。

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

 

 

  

 

 

  

 

 

 

 

 

 

 

 

 

  

 

  

1. 使用 Pandas 库的 'Dataframe()' 方法,将爬取到的商品数据 'data' 转换为 Dataframe 格式。

2. 使用 Python 的 CSV 库打开一个新的 CSV 文件,将数据按照指定格式按行写入文件中。

3. 将 Dataframe 格式的数据返回供后续使用。

数据分析

1. 使用 Pandas 库的 'mean()'、'min()' 和 'max()' 方法,分别计算该 Dataframe 中的价格均值、最低价和最高价,并将结果输出到控制台。

2. 使用 Matplotlib 库的 'hist()' 方法,绘制商品价格的直方图,其中 bins 参数表示划分价格区间的个数,range 参数表示价格区间的范围。

3. 使用 Matplotlib 库的 'boxplot()' 方法,绘制商品价格的箱线图,用于展示价格分布的离散程度,其中 yticks 参数可以调整箱线图的 y 轴标签方向。

4. 使用 Matplotlib 库的 'scatter()' 方法,绘制商品价格和销量的散点图,用于展示两者之间的相关性。

5. 使用 Seaborn 库的 'barplot()' 方法,绘制商品价格的柱形图,其中使用 'pd.cut()' 方法对价格数据进行分组,并可以指定分组区间,以便更好地展示价格分布情况。

生成词云图

1. 将所有的地区名称通过空格拼接成一个字符串,并使用 jieba 库的 'lcut()' 方法对字符串进行分词。

2. 创建 WordCloud 对象,并指定一些参数,例如背景颜色、字体文件路径和停用词列表等。

3. 调用 WordCloud 对象的 'generate()' 方法,根据输入的文本生成词云图。

4. 使用 Matplotlib 库的 'imshow()' 方法,显示生成的词云图,并使用 'axis()' 方法隐藏坐标轴。

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

 

 

 

 

 

 

 

 

 

 

 

  

添加代理地址判断功能及有关于输入数据判断出错处理

数据判断

1. 使用 Python 的 'while' 循环,一直等待用户输入,直到输入格式正确为止。

2. 使用内置函数 'int()' 将用户输入的字符串转换为整数类型。

3. 如果输入内容不能正常转换为整数,则捕获 'ValueError' 异常,并提示用户重新输入。

4. 如果用户输入正确,将输入的整数作为函数返回值。

代理IP判断

1. 使用 'input()' 函数让用户选择是否使用代理 IP,当输入不为 'Y' 或者 'N' 时,通过 'while' 循环不断重新提示输入直至正确。

2. 如果用户选择使用代理 IP,通过 'input()' 函数获取代理 IP,如果输入不符合规范,通过多层嵌套的 'try...except...' 分别对输入的 IP 和端口号进行校验,分别检查其是否在规定的范围内和是否符合 IPv4 地址格式。

3. 如有输入不符合规范,通过 'print()' 函数及 'input()' 函数让用户选择操作。

4. 如果用户选择重新输入代理 IP,则通过 'continue' 关键字实现循环,反之返回 'None'。

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

 

 

 

 

 

 

 

   

 

  

 

 

 

   

 

   

 

  

 

 

 

          

 

   

 

  

 

 

  

 

 

   

 

  

 

 

 

 

运行结果

 完整代码

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

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

 

 

  

 

 

 

 

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

  

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

  

 

 

 

   

 

   

 

  

 

 

 

          

 

   

 

  

 

 

  

 

 

   

 

  

 

 

 

 

 

 

 

 

 

 

 

 

   

 

 

   

 

  

  

 结尾

本文地址:http://changmeillh.xhstdz.com/quote/63067.html    物流园资讯网 http://changmeillh.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号