import requests,bs4,csv,os,re,time

'''采集商品url'''

def shopifylist(url):

while True:

try:

res=requests.get(url,timeout=30)

res.encoding = res.apparent_encoding

print('请求',url,'状态',res.status_code)

res.raise_for_status()#如果返回状态不是200,则抛出异常

break

except:

timeout=3

print('链接失败,等待',timeout,'秒重试')

time.sleep(timeout)

print('')

print('重新链接中')

print('链接顺畅,开始获取商品链接')

noStarchSoup=bs4.BeautifulSoup(res.text,'html.parser')#html.parser 指定解析器

url=noStarchSoup.select('.product-card.sc-pb-element')

for i in range(len(url)):

imgurl='https://tribalhollywood.com'+url[i].get('href')

print('获取产品url')

shopify(imgurl,site)#调用采集内容方法

print('\n')

'''采集商品url结束'''

'''采集商品内容开始'''

def shopify(url,site):

print('开始请求产品页面',url)

while True:

try:

res=requests.get(url,timeout=30)

res.encoding = res.apparent_encoding

print('成功请求商品页面:',res.status_code)

res.raise_for_status()#如果下载发生问题,就抛出异常

break

except:

print('请求商品页面',url,'失败,重新链接')

noStarchSoup=bs4.BeautifulSoup(res.text,'html.parser')

#匹配class属性为‘wc-block-grid__product-title’的内容

name=noStarchSoup.select('.product-single__title')

name=name[0].getText()

price=noStarchSoup.select('.product-single__price')

price=price[0].getText()

price=re.sub(' ','',price)

price=re.sub('\n','',price)

#特别注意class="rte product-single__description"只需要product-single__description

des=noStarchSoup.select('.product-single__description')

des=des[0].getText()

des=re.sub('Hollywood','customadd.com',des)#替换版权信息

img=noStarchSoup.select('#ProductThumbs-product-template img')

if img==[]:

img=noStarchSoup.select('.sc-pb-element1')

l=img[0].get('src')

l='http:'+l

l=re.sub('_960x','',l)

else:

l=[]

for i in range(len(img)):

imgurl=img[i].get('src')

imgurl=re.sub('_160x160','',imgurl)

l.append('https:'+imgurl)

l=','.join(l)

fileHeader=['标题','产品url','价格','描述','图片']

file=[name,url,price,des,l]

#文件存储的地方,文件夹需要事先创建,并指定文件的格式为utf-8

while True:

try:

csvFile=open(site,'a',encoding='utf-8')

break

except:

print('')

print(site+'文件写入失败,重试中。。。。。')

time.sleep(5)

size=os.path.getsize(site)#判断文件大小,如果文件大于0则表示文件有内

writer=csv.writer(csvFile)

if size==0:

writer.writerow(fileHeader)

writer.writerow(file)

csvFile.close()

else:

writer.writerow(file)

csvFile.close()

print('采集成功!')

'''采集内容结束'''

#urlpro=str(input('输入要采集的商品列表'))

urlpro='https://www.tribalhollywood.com/collections/mens-necklaces'

site='D:\Backup\桌面\python3\mens-necklaces1.csv'

nt=['我不是空的']

n=1

while nt!=[]:

url=urlpro+'?page='+str(n)

prourl=shopifylist(url)#调用采集列表方法

print('成功采集',n,'页')

n=n+1

res=requests.get(url)

res.raise_for_status()

noStarchSoup=bs4.BeautifulSoup(res.text,'html.parser')

nt=noStarchSoup.select('.next')

print('全部采集完毕!!')

python输入三个商品_用python3采集shopify站点商品相关推荐

  1. python输入三个整数_#python输入一个序列,其中包含表示年,月,日的三个整数,判断这个日期是当年的第几?#...

    python ,获取当前时刻,要求格式为:年月日,时分 am或pm >>> import time >>> print time.strftime("%Y ...

  2. python输入三个数,将这三个数从小到大输出

    python输入三个数,将这三个数从小到大输出 1. sort() 2. sorted() 3. 分支结构比大小 4. max() 1. sort() a = [] for i in range(1, ...

  3. python表示三个数升序_编写程序,输入三个数,然后以升序显示_学小易找答案

    [简答题]按照软件开发的顺序,实现下列程序: 计算三角形面积的公式为:s = (side1 + side2 + side3) / 2,area = (s - side1)(s - side2)(s - ...

  4. python输入三个整数x、y、z、请把这三个数由小到大输出_输入三个整数x、y、z,请把这三个数由小到大输出...

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

  5. python输入三个整数、输出最大的数_题目:使用Python编程,输入三个整数x,y,z,请把这三个数由小到大输出...

    题目:输入三个整数x,y,z,请把这三个数由小到大输出 思路:这题主要使用list.sort()的方法排列,首先要保证用户输入的数字一定是整数,如果不是整数需要提示用户输入错误,重新输入.(使用try ...

  6. 用python输入三个整数判断能否构成三角形_用户输入三个数字,判断可以构成什么三角形?...

    1.练习1:使用python实现两个数字的交换 A= input("请输入一个数字:") B= input("请在输入一个数字:") A,B=B,A print ...

  7. 用python输入三个整数判断能否构成三角形_用户输入三个数字,判断能够构成什么三角形?...

    一.练习1:使用python实现两个数字的交换 A= input("请输入一个数字:") B= input("请在输入一个数字:") A,B=B,A print ...

  8. 用python输入三个整数判断能否构成三角形_输入3个整数,判断是否能构成三角形,c语言编程...

    展开全部 可以根据数学公式进行判断. 一.数学定理. 要构成三角636f70793231313335323631343130323136353331333363373735形,必须要任意两边和大于第三 ...

  9. 用python编写表达式求值_用Python3实现表达式求值

    Problem Description yizhen has no girlfriend due to his stupid brain that he even can't solve a simp ...

最新文章

  1. dubbo启动顺序问题
  2. 在Microsoft Word中,Node是如何替代宏的
  3. java transient关键字
  4. 【Python】干货分享 | Pandas处理时间序列的数据
  5. 【机器学习基础】一文归纳AI调参炼丹之法
  6. mysql 备份工具xtrabackup全备与还原图解
  7. 如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存
  8. php 构造骚扰短信发送机(仅供学习与参考,请勿用于非法用途)
  9. hdu 4970 killing monster 代代相传刷qq 不用线段树啦~
  10. linux中apache服务器的搭建与配置
  11. 大学编程python_大学生想学一门编程语言傍身,Python可以吗?
  12. python打开文本文档_带声明的Python –带打开的文件
  13. web服务器mysql日志分析
  14. [python] 为 pip 更换国内源
  15. java自动填充_java-自动使用随机数据填充原始属性?
  16. java 正则表达式匹配_Java 正则表达式匹配
  17. VueX浏览器刷新如何保存数据
  18. 利用python进行数据分析(第二版)_第六章
  19. 换发型特效怎么制作?这些方法值得收藏
  20. 第三部分 :简单句的补充(并列句)

热门文章

  1. 这50个思维方法,深刻改变了我的人生
  2. 10岁才上小学的他,如今是高校男神教授
  3. 西欧八国调查:25%受访者宁要AI政府也不要民选政治家
  4. 坚持早起21天,每月多赚1000+ (文末有惊喜)
  5. 深度学习(1)--引言
  6. (pytorch-深度学习)双向循环神经网络
  7. linux ps 命令使用
  8. HtmlUnit优秀文章
  9. springmvc整合mybatis之准备阶段与文件配置
  10. 使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用