爬取天猫链接
import urllib.request
import re
import random
from openpyxl import Workbook
#获取网页所有数据
def get_html(url):
#设置请求头
head={
'Connection':'keep-alive',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36'
}
# 创建IP列表
IPlist = ['183.62.196.10:3128', '112.115.57.20:3128']
#设置代理处理器
pro=urllib.request.ProxyHandler({'http':random.choice(IPlist)})
#设置支持http请求的opener对象
opener=urllib.request.build_opener(pro)
#遍历字典中的请求头信息,追加在list1列表中
list1=[]
for key,value in head.items():
aa=(key,value)
list1.append(aa)
#添加请求头信息
opener.addheaders=list1
#向服务器发送请求,并获取响应结果
r=opener.open(url)
#读取响应结果
data=r.read().decode('utf-8')
return data
urls='https://www.tmall.com'
#获取天猫官网的网页数据
data=get_html(urls)
#清洗数据,提取想要的信息
def get_data(data1):
#获取网页中的超链接以及文本
r=re.findall('<a href="(.*?)">(.*?)</a>',data1)
#保存在excel中
#创建工作簿
wb=Workbook()
#创建工作表
sheet1=wb.create_sheet('天猫官网链接',0)
#添加标题
list1=['编号','链接','名称']
for i in range(len(list1)):
sheet1.cell(1,i+1).value=list1[i]
#添加内容
#外层循环代表遍历行数,也是列表中元组的个数
for a in range(len(r)):
#添加编号
sheet1.cell(a + 2, 1).value = (a + 1)
#内层循环代表遍历列数,也是元组中元素的个数
for b in range(len(r[a])):
sheet1.cell(a+2,b+2).value=r[a][b]
wb.save('data/tianmao1.xlsx')
get_data(data)
#t添加到csv文件中
def get_data2(data):
r = re.findall('<a href="(.*?)">(.*?)</a>', data)
return r
datalist=get_data2(data)
def saveCsv():
with open('data/天猫数据.csv','w',newline='') as file:
aa=csv.writer(file)
file.write('编号#联接#备注\n')
aa.writerows(datalist)
#第二中方法
file.write('编号#联接#备注\n')
num =1
for i in datalist:
file.write('{}#{}#{}\n'.format(num,i[0],i[1]))
num+=1
saveCsv()