微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

纪第一个Python爬虫——爬取指定页数淘宝商品的价格名称等并存入csv文件

代码如下:

 1 """
 2 Created on Thu Jun 10 21:42:17 2021
 3 
 4 @author: 泥烟
 5 
 6 本爬虫可实现指定商品,指定页数的信息爬取,仅用来学习
 7 具有时效性(cookie会过期,用的时候手动改一下即可)
 8 """
 9 
10 
11 import requests
12 import re
13 import csv
14 import time
15 
16 count=1
17 #步骤1:提交商品搜索请求,循环获取页面
18 def getHTMLText(url):
19     me = {'cookie':'略',
20           'User-agent':'Mozilla/5.0'}
21     try:
22         r = requests.get(url, headers=me,timeout=30)
23         r.raise_for_status()
24         r.encoding = r.apparent_encoding
25         return r.text
26     except:
27         return ""
28 
29 #步骤2:对于每个页面提取商品序号,名称和价格信息
30 def parsePage(ilt, html,page):
31     try:
32         plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)
33         tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)
34         #每页第一个商品的序号
35         global count
36         for i in range(len(plt)):
37             price = eval(plt[i].split(':')[1])
38             title = eval(tlt[i].split(':')[1])
39             ilt.append([count,price, title])
40             count+=1
41     except:
42         print("")
43 
44 
45 def main():
46     print('输入要爬取的商品名字:')
47     goods = input()
48     print("输入要爬取的页数(仅做练习,请尽量少于10页):")
49     depth = int(input())
50     basic_url = 'https://s.taobao.com/search?q=' + goods
51     uList = []
52     header = ["序号", "价格", "商品名称"]
53 
54     for i in range(depth):
55         try:
56             url = basic_url + '&s=' + str(44 * i)
57             html = getHTMLText(url)
58             parsePage(uList, html,i)
59             print("第"+str(i+1)+"页爬取成功")
60             time.sleep(0.5)
61         except:
62             continue
63     filename = goods+".csv"
64     #步骤3:将信息保存在文件中,文件名为该商品的名字
65     with open(filename, 'a', newline='') as f:
66         writer  = csv.writer(f)
67         writer.writerow(header)
68         for row in uList:
69             writer.writerow(row)
70 
71 if __name__ == '__main__':
72     main()
73     print("输入回车退出...")
74     input()

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐