在爬取淘宝商品信息时,需要先登录获取Cookie并且模拟User-Agent
headers = {
"user-agent":
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
, "cookie":
"你自己登录时的Cookie"
}
这里我使用的是Safari浏览器,查看网页源代码,点击“网络”-->点击“标头”
···将查询到的Cookie复制到代码中
完整Python代码如下:
# 爬取淘宝网页信息
import requests
import re
def getHTMLText(url,head):
try:
r = requests.get(url,headers = head,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '获取HTML失败'
def parsePage(itl,html):
try:
plt = re.findall(r'"view_price":"[\d.]*"',html)
tlt = re.findall(r'"raw_title":".*?"',html)
for i in range(len(plt)):
price = plt[i].split(':')[-1]
title = tlt[i].split(':')[-1]
itl.append([price,title])
return itl
except:
print('parsePage Error')
def printGoodsList(itl):
tplt = "{:4}\t{:8}\t{:16}"
print(tplt.format('序号','价格','商品名称'))
count = 0
for g in itl:
count += 1
print(tplt.format(count,g[0],g[1]))
def main():
headers = {
"user-agent":
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
, "cookie":
"自己查询的Cookie"
}
goods = '书包'
depth = 5
start_url = 'https://s.taobao.com/search?q=' + goods
infoList = []
for i in range(depth):
try:
url = start_url + "&s=" +str(44*i)
html = getHTMLText(url,headers)
it = parsePage(infoList,html)
printGoodsList(it)
except:
print("打印%d页出错"%i)
main()