• 纪第一个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()
    天涯犹在,不诉薄凉。
  • 相关阅读:
    c#中文字符串与byte数组互相转化
    c#的中英文混合字符串截取 public static string SubString(string inputString, int byteLength)
    c#的中英文混合字符串截取指定长度,startidx从0开始
    //字符是否为汉字
    //获得字节长度
    C# 截取中英文混合字符串分行显示宽度相同
    C#截取中英文混合字符串分行显示
    C#截取指定长度中英文字符串方法 (修改)
    截取字符串的长度(中英文)
    canvas贪吃蛇游戏
  • 原文地址:https://www.cnblogs.com/Knight02/p/14875369.html
Copyright © 2020-2023  润新知