好友
阅读权限10
听众
最后登录1970-1-1
|
多啦AOA
发表于 2017-3-20 18:40
#-*-coding:utf8-*-.
# 1提交商品搜索请求,循环获取页面
# 2对每一个页面提取商品名称和价格信息
# 3将信息输出到屏幕上
import requests
import re
#获取页面
def getHTMLText(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding#将对文本中解析的编码替换整体编码
return r.text
except:
return ''
print('')
#对每一个获取的页面进行解析
def parserPage(ilt,html):
try:
plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html)
tlt = re.findall(r'\"raw_title\"\:\".*?\"',html)
for i in range(len(plt)):
#eval()函数可去掉获得的数据的最外层的引号去掉
price = eval(plt.split(':')[1])
title = eval(tlt.split(':')[1])
ilt.append([price,title])
except:
print('dd')
#输出商品信息
def printGoodsList(ilt):
#打印模版
tplt = "{:4}\t{:8}\t{:16}"
#打印输出表头
print(tplt.format("序号",'价格','商品名称'))
count = 0
for g in ilt:
count = count + 1
print(tplt.format(count,g[0,g[1]))#序号,价格,名称
print('')
#定义爬取深度
def main():
goods = input('请输入您要的商品名称:')
try:
depth = int(input('请输入您要获取的页面数:'))
except:
print('请输入大于0的正整数来表示页数!')
start_url ='https://s.taobao.com/search?q={}'.format(goods)
infoList =[]
#对每一个页面进行单独的访问和处理
for i in range(depth):
try:
#对每一个url链接进行设计
url = start_url + '&s' + str(44+i)
html = getHTMLText(url)
#处理每个页面的解析过程
parserPage(infoList,html)
except:
continue
printGoodsList(infoList)
main()
代码的注释都写上的,还有不明白的地方请说指出
|
-
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|