从网站访问地址,(学习地址:http://mp.weixin.qq.com/s/oO46GdmGeDdYGvW3B75qsg)找了一个评论地址:
https://rate.tmall.com/list_detail_rate.htm?itemId=521136254098&spuId=345965243&sellerId=2106525799&order=1¤tPage=1
从一个学习网站复制过来的代码
上菜:
# 导入所需的开发模块
import requests
import re
# 创建循环链接
urls = []
for i in list(range(1,100)):
urls.append('https://rate.tmall.com/list_detail_rate.htm?itemId=521136254098&spuId=345965243&sellerId=2106525799&order=1¤tPage=%s' %i)
# 构建字段容器
nickname = []
ratedate = []
color = []
size = []
ratecontent = []
# 循环抓取数据
for url in urls:
content = requests.get(url).text
# 借助正则表达式使用findall进行匹配查询
nickname.extend(re.findall('"displayUserNick":"(.*?)"',content))
color.extend(re.findall(re.compile('颜色分类:(.*?);'),content))
size.extend(re.findall(re.compile('尺码:(.*?);'),content))
ratecontent.extend(re.findall(re.compile('"rateContent":"(.*?)","rateDate"'),content))
ratedate.extend(re.findall(re.compile('"rateDate":"(.*?)","reply"'),content))
print(nickname,color)
# 写入数据
file = open('南极人天猫评价.csv','w')
for i in list(range(0,len(nickname))):
file.write(','.join((nickname[i],ratedate[i],color[i],size[i],ratecontent[i]))+'\n')
file.close()
我只是安装了python,没有任何类包,上面代码用到了requests,我真是各种百度,
遇到的问题1
都说pip install requests
就可以安装了。我试了好几次没成功,结果发现,需要在python的安装目录的scripts
文件夹下执行pip install requests
,然后安装成功
遇到的问题2
因为爬取的数据里面有汉字,就报错了。应该是编码的问题,然后我就又百度,添加了
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
然后就不报错了
遇到的问题3
写入文件csv失败,原因是该文件没有写权限,就设置了文件的权限,然后成功
遇到的问题4
数据写入文件乱码
import codecs
file.write(codecs.BOM_UTF8) # 防止乱码
添加了这个类包和代码就不乱码了
遇到的问题5
就是添加了
`# -*- coding: UTF-8 -*-
所以完整的代码
`# -*- coding: UTF-8 -*-
import requests
import re
import codecs
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
urls = []
for i in list(range(1,100)):
urls.append('https://rate.tmall.com/list_detail_rate.htm?itemId=521136254098&spuId=345965243&sellerId=2106525799&order=1¤tPage=%s' %i)
nickname = []
ratedate = []
color = []
size = []
ratecontent = []
for url in urls:
content = requests.get(url).text nickname.extend(re.findall('"displayUserNick":"(.*?)"',content))
# color.extend(re.findall(re.compile('颜色分类:(.*?);'),content))
color.extend(re.findall(re.compile('"auctionSku":(.*?);'),content))
# size.extend(re.findall(re.compile('尺码:(.*?);'),content))
ratecontent.extend(re.findall(re.compile('"rateContent":"(.*?)","rateDate"'),content))
ratedate.extend(re.findall(re.compile('"rateDate":"(.*?)","reply"'),content))
# print(ratedate)
file = open('F:\\python\\tmall.csv','wb')
file.write(codecs.BOM_UTF8) # 防止乱码
for i in list(range(0,len(nickname))):
file.write(','.join((nickname[i],color[i],ratecontent[i],ratedate[i]))+'\n')
file.close()`
以上就是完整的一个案例