内容正文:
情景七 Python与电子商务
任务
mission
1
2
电子商务爬虫
电子商务数据分析
2
任务一 Python之电子商务爬虫
一.爬虫基础
什么是爬虫?
爬虫可以帮助我们把网站上的信息快速提取并保存下来。
能爬取哪些数据?
在网页中我们能看到各种各样的信息,最常见的便是常规网页,它们对应着 HTML 代码,而最常抓取的便是 HTML 源代码。
一.爬虫基础
1.爬虫流程
1)获取网页
爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码
2)提取信息
获取网页的源代码后,接下来就是分析网页的源代码,从中提取我们想要的数据。
3)保存数据
提取信息后,我们一般会将提取到的数据保存到某处以便后续使用。
4)自动化程序
爬虫可以代替人来完成这些操作。
一.爬虫基础
2.urllib模块
打开和读取URL
解析URL
解析robots.txt文件
包含urllib.request抛出异常
一.爬虫基础
读取重庆城市职业学院主页html源码
from urllib.request import urlopen
myURL = urlopen("https://www.cqcvc.edu.cn/")
print(myURL.read().decode('utf-8'))
一.爬虫基础
使用request读取重庆城市职业学院主页html代码
import urllib.request
request = urllib.request.Request(' https://www.cqcvc.edu.cn/')
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))
一.爬虫基础
3.异常处理
urllib 的 error 模块定义了由 request 模块产生的异常。如果出现了问题,request 模块便会抛出 error 模块中定义的异常。
【实例】用测试网站捕获异常
import socket
import urllib.request
import urllib.error
try:
response = urllib.request.urlopen('https://httpbin.org/get', timeout=0.1)
except urllib.error.URLError as e:
if isinstance(e.reason, socket.timeout):
print('TIME OUT')
一.爬虫基础
4.分析robots协议
利用 urllib 的 robotparser 模块,可以实现网站 Robots 协议的分析。Robots 协议也称作爬虫协议、机器人协议,它的全名叫作网络爬虫排除标准(Robots Exclusion Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。
一个 robots.txt 的样例:
User-agent: *
Disallow: /
Allow: /public/
二.爬取电子商务数据
项目要求:
爬取京东商城中“笔记本电脑”的数据,并把内容存储到excel表格之中。
1.安装第三方库
1)安装爬虫库
Pip install requests
Pip install selectors
Pip install lxml
2)安装excel文件库
Pip install openpyxl
二.爬取电子商务数据
二.爬取电子商务数据
2.分析网页结构
1)查看网页
在google chrome浏览器中输入:http://www.jd.com。
注意:
1.建议使用google浏览器。
2.复制网页时建议分2次取再拼接。
如下2个连接都是相同的:https://search.jd.com/search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC&suggest=1.his.0.0&wq=%E7%AC%94%E8%AE%B0%E6%9C%AC&ev=exbrand_%E8%81%94%E6%83%B3%EF%BC%88lenovo%EF%BC%89%5E
https://search.jd.com/search?keyword=笔记本&suggest=1.his.0.0&wq=笔记本&ev=exbrand_联想(lenovo)%5E
二.爬取电子商务数据
2.分析网页标签
在浏览器中,按F12功能键
点击商品标签,看右边代码的变化。
可以看到在class标签id=J_goodsList里ul标签下的li标签,对应着所有商品列表
二.爬取电子商务数据
3.爬取数据
url=https://search.jd.com/search?keyword=笔记本&wq=笔记本&ev=exbrand_联想%5E&page=9&s=241&click=1
headers ={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
res = requests.get(url,headers=headers)
res.encoding = 'utf-8'
text = res.text
selector = etree.HTML(text)
list = selector.xpath('//*[@id="J_goodsList"]/ul/li')
for i in list:
title=i.xpath('.//div[@class="p-name p-name-type-2"]/a/em/text()')[0]
……
print("product_id="+str(product_id))
print("-----")
二.爬取电子商务数据
4.获取评论数据
在F12对应的界面中,转到network页,找到以“productCommentSummaries.action”开头的项目,把对应的URL地址取出并放到浏览器中执行,得到的页面就是所有商品ID以及对应的评论数据。
二.爬取电子商务数据
4.获取评论数据
在F12对应的界面中,转到network页,找到以“productCommentSummaries.action”开头的项目,把对应的URL地址取出并放到浏览器中执行,得到的页面就是所有商品ID以及对应的评论数据。
二.爬取电子商务数据
4.获取评论数据
创建函数读取数据
def commentcount(product_id):
url1 = “https://club.jd.com/comment/productCommentSummaries.action?referenceIds=”+str(rpoduct_id)+”&callback=jQuery5358031&_=1667631915528”
res1 = requests.get(url1, headers=headers)
……
return comment_count
for i in list:
title=i.xpath('.//div[@class="p-name p-name-type-2"]/a/em/text()')[0]
……
print("price="+str(price))
print("comment_count="+str(comment_count))
二.爬取电子商务数据
5.保存数据到excl文件中
import openpyxl
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1,column=1,value="index")
......
outws.cell(row=count, column=1, value=str(count-1))
outws.cell(row=count, column=2, value=str(title))
outws.cell(row=count, column=3, value=str(price))
outws.cell(row=count, column=4, value=str(comment_count))
count+=1
outwb.save("jdgood.xls")
三. 任务一 小结
通过本次任务的学习和实践,使我们熟悉了Python网络爬虫的基本模块,能够使用urllib与request配合抓取网页内容。在任务实施中,增加了xpath与openpyxl的内容,以便于更好的分析与爬取数据,并把数据保存到本地文件之中。
要爬取网页的数据,就要对网页的基本结构有所了解,同时要会使用google chrome的F12功能,把我们需要的内容映射到不同的div之中。
同学们要强化个人信息自我保护意识,在生活、学习中养成保护个人信息的习惯。要遵守网站的robots协议,不爬取敏感信息,在网站中获取的数据,只用于学习不做他途。当要做数据交换时,要及时的对数据进行脱敏操作,严禁不脱敏就向网络发送传播原始信息
$$