首页 > 编程源码 > 抓取淘宝商品信息爬字

抓取淘宝商品信息爬字

楼主:资源分享 [官方] · 2020-7-5 ·  浏览750 · 编程源码 · ID:

目标:获取淘宝搜索页面信息,爬取商品的名称和价格

方法:淘宝的搜索接口

翻页处理

库:requests

对比网址:

起始页

第二页 s=44

第三页 s=88

得到 第n页是s=(n-1)*44

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者资源分享流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/31700.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
5条回复 |  最后回复于2020-7-5

资源分享 [官方]

淘宝网站的robots协议(一般网站的robots协议约定放在网站的主目录下的/robots.txt中)
发布于2020-7-5

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

可以看出爬虫不得对淘宝的搜索页面进行爬取(爬取速度就像人类的速度则是允许的)

User-agent 用户(叫爬虫种类或者名称)
Allow 允许爬取的目录
Disallow 不允许爬取的目录
发布于2020-7-5

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

程序结构:

1.提交商品搜索请求,循环获得页面

2.从每个页面中提取商品的名称和价格信息

3.打印输出

以搜索鞋为例:
发布于2020-7-5

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

结论:raw_title和view_price分别对应名称和价格
发布于2020-7-5

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

代码:

# -*- coding:utf-8 -*- # 解决python不兼容中文

# 加载requests库
import requests
# 加载正则表达式模块
import re

# 爬取网页内容模块
def get_html_text(url): # 获取要访问的网址
try:
r = requests.get(url, timeout=30) # 把爬取后的内容赋给r,等待时间对多30秒
r.raise_for_status() # 爬取网页时返回的状态码
r.encoding = r.apparent_encoding # 把从内容中分析的编码方式赋给从HTTP header中猜测的编码方式
return r.text # 返回爬取网页后的文本
except RuntimeError: # 一般超时错误
return "" # 函数结束返回

# 从爬取网页的文本内容中提取有价值信息
def parse_page(self, html): # 接收
try:
find_price = re.findall(r'"view_price":"[d.]*"', html)
find_title = re.findall(r'"raw_title":".*?"', html)
for i in range(len(find_price)):
price = eval(find_price[i].split(':')[1])
title = eval(find_title[i].split(':')[1])
self.append([price, title])
except RuntimeError: # 一般超时错误
print()

# 打印提取后的数据
def print_goods_list(data):
headline = "{:4} {:8} {:16}"
print(headline.format("序号", "价格", "商品名称"))
count = 0
for i in data:
count = count + 1
print(headline.format(count, i[0], i[1]))

# 主函数
def main():
search_text = '鞋' # 设置在淘宝搜索的内容
depth = 3 # 设置爬取深度为3页
start_url = '[hide]https://s.taobao.com/search?q=[/hide]

' + search_text
information_list = []
for i in range(depth):
try:
url = start_url + '$s=' + str(44*i)
html = get_html_text(url)
parse_page(information_list, html)
except RuntimeError: # 一般超时错误
continue
print_goods_list(information_list)

main()
发布于2020-7-5

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
9人签到
已签0天
  • 46566帖子
  • 1935958热点量
  • 184631火热值