目标:下载淘宝某一个店铺的全部商品
一开始使用了最简单的html下载器urllib2
response = urllib2.urlopen(url.encode('utf-8'))
下载的html代码非常不全,连基本的商品名称都没有!
难道淘宝发现这是机器人了?
于是我换了一个下载器,并且把自己伪装成了火狐浏览器
def getHTMLText(url):
headers = {'user-agent': "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0",
'Accept-Language': "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3"}
try:
r = requests.get(url, headers=headers, timeout=30)
r.encoding = r.apparent_encoding
return r.text
except requests.exceptions.RequestException, e:
print e
当然,还是不行
由于淘宝店铺内的商品列表信息是通过ajax获取的。
需要先通过F12找到ajax对应的地址,然后下载地址的json信息即可,
下载下来以后发现json内容是html,于是把他放到<html><body></body></html>中,这样就可以用beautifulsoup4来分析了