看不懂别做爬虫-----python scrapy爬取淘宝
淘宝商品数据爬取
1.网页分析
做爬虫第一步当然是打开网页进行分析
首先打开网站以后 发现在显示的位置 没有我们想要的数据 那我们就 使用查找就可以 ctrl + f
复制一个商品的信息 看看网页源代码中有没有
现在发现数据其实是在源代码中 中有一个字典 我们只需要取出这个字典 里面的东西就都可以取出了
2.创建项目
我们要使用scrapy框架 没有安装的自行百度安装
创建项目
# scrapy startproject 项目名称
scrapy startproject taobao
创建爬虫
# scrapy genspider 爬虫名 爬取链接
scrapy genspider mytaobao https://www.taobao.com/
创建以后的项目结构应该是这样的
3.修改setting文件
修改setting文件 加入cookie
# Disable cookies (enabled by default)
COOKIES_ENABLED = False# Disable Telnet Console (enabled by default)
# TELNETCONSOLE_ENABLED = False# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, li""ke Gecko) Chrome/81.0.4044.138 Safari/537.36","Cookie": "t=f18d672f5f02333283361f7a027faf6a; cna=pfevF4KruwMCATFGNZqulgP/; cookie2=15ddfbbb62a80754706e020499dd1e73; v=0; _samesite_flag_=true; sgcookie=EINz448jeiIKB8WGxzs9N; uc3=id2=UNDVc8%2F7VdzE9Q%3D%3D&lg2=Vq8l%2BKCLz3%2F65A%3D%3D&nk2=0%2BGi4p5HRSmLlP4%3D&vt3=F8dCufTFCNSqkiy4xCI%3D; csg=72aefe12; lgc=%5Cu554A941826670; dnk=%5Cu554A941826670; skt=3860c595dca8d168; existShop=MTU5NzcxMDE4OQ%3D%3D; uc4=nk4=0%400VrwPsxHxKlIRxHYn8ykawwoZ9uFVQ%3D%3D&id4=0%40UgclHutHCO6ZuzWz2MpkPDjGN4DT; tracknick=%5Cu554A941826670; _cc_=V32FPkk%2Fhw%3D%3D; enc=Cb6iMnjgmA9xnM3tVujqJ9wsNaWy5aqhGOIdZ8X1hEjHsNwahsNbxuAaBm%2B0UgqwdOl7ZGHdobezDfdX8fdEIA%3D%3D; mt=ci=1_1; thw=cn; hng=CN%7Czh-CN%7CCNY%7C156; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; _m_h5_tk=798da7f33bdf9cb44e2c7d98ce2bdb39_1597840452252; _m_h5_tk_enc=fe629ed25401362d32eb5661ee558ee1; _tb_token_=e518fe307f878; uc1=cookie21=UtASsssmeWzt&cookie14=UoTV6yHCSQX2uw%3D%3D&cookie16=W5iHLLyFPlMGbLDwA%2BdvAGZqLg%3D%3D&existShop=false&pas=0; _uab_collina=159783978023357089252779; x5sec=7b227365617263686170703b32223a226637393930633138333334643634356630393863363866303562383962626563434b4f7a39506b46454c7661382b534f685a537a42686f4d4d7a41784d5467324f4467794d547378227d; JSESSIONID=81ED84AB340E7E67228ACDA5715389D8; isg=BHZ2n7zRNfwll8EU9uMJSqY0x6p4l7rRV0w-0eBfaNn0Ixa9SCPY4dXSP_9Pi7Lp; l=eBOQeAxlOI8AcCX-BOfZnurza77TIIRAguPzaNbMiOCPO25p5CjRWZuI2-T9CnGVh6jBR3oPlnYkBeYBc3K-nxv92j-la6kmn; tfstk=ctjdB7tTXRHL9wvO3wUMF2PMVnwGZmU9a2Om2-IUleEQ2IoRi5scDW5adKGpXRC.."}
4.修改item文件
现在修改一下item.py 将你需要的字段添加进去
import scrapyclass TaobaoItem(scrapy.Item):# 店铺名shop_name = scrapy.Field()# 商品标题title = scrapy.Field()# 价格price = scrapy.Field()# 销量buy_num = scrapy.Field()# 地址address = scrapy.Field()# 图片链接pic_url = scrapy.Field()# 详情链接detail_url = scrapy.Field()
5.修改爬虫文件
打开mytaobao.py 修改里面的内容 这个文件就是我们的爬虫文件
这个是这个爬虫中所有导入的第三方库
import json
import re
from pprint import pprint
from urllib import parse
from taobao.items import TaobaoItem
from taobao.settings import *import scrapy
import scrapyclass MytaobaoSpider(scrapy.Spider):name = 'mytaobao'allowed_domains = ['https://www.taobao.com']# 将搜索后的链接替换到列表中start_urls = ['https://s.taobao.com/search?q=%E8%A3%99%E5%AD%90&sort=sale-desc&s=44']def parse(self, response):pass
现在开始重写parse方法 使用正则取出刚刚页面中的 g_page_config
def parse(self, response):# 取出后转换为字典goods_data_dict = json.loads(re.search("g_page_config = ({.*?});", response.text).group(1))# 取出想要的具体内容(为列表)goods_list = goods_data_dict.get("mods").get('itemlist').get('data').get("auctions")# 循环刚刚得到的列表 取出数据保存到刚刚修改的item.py 存储对象中for goods in goods_list:item = TaobaoItem()item["shop_name"] = goods.get("nick")item["title"] = goods.get("raw_title")item["address"] = goods.get("item_loc")item["price"] = goods.get('view_price')item["buy_num"] = goods.get("view_sales")item["pic_url"] = 'http:' + str(goods.get("pic_url"))item["detail_url"] = 'http:' + str(goods.get("detail_url"))print("-+-" * 30)pprint(item)# 返回数据yield item
这就是获取到一页的数据
5.运行代码
使用scrapy crawl mytaobao
运行文件
一定要查看当前路径有我们要运行的文件
现在只要实现翻页就可以了
# 定义一个变量在类中
now_page = 1# 在刚刚返回对象下面写
self.now_page += 1
if self.now_page < 5:url = "https://s.taobao.com/search?q=%E8%A3%99%E5%AD%90&sort=sale-desc&s{}".format(self.now_page * 44)print("-" * 80)print(url)print("-" * 80)yield scrapy.Request(url=url, callback=self.parse)
优化一下代码 在setting中定义
# 修改打印日志等级 关掉一些你看了也看不懂的东西
LOG_LEVEL = 'ERROR'# 三个变量 会在爬虫文件中用得到
KEY_WORDS = "裙子"
PAGE_NUM = 3
ONE_PAGE_COUNT = 44
因为中文不会直接出现在url中 所以需要一个库来进行转码
class MytaobaoSpider(scrapy.Spider):name = 'mytaobao'allowed_domains = ['taobao.com']# 添加的转码方法key_word = parse.quote(KEY_WORDS, ' ').replace(' ', "+")# 将这个url与setting文件中的三个变量进行拼接start_urls = ['https://s.taobao.com/search?q={}&sort=sale-desc&s={}'.format(key_word, ONE_PAGE_COUNT)]
# ---------------------------------------------------------
# 修改一下刚刚翻页的代码
if self.now_page < self.settings["PAGE_NUM"]:url = "https://s.taobao.com/search?q={}&sort=sale-desc&s={}". \format(self.key_word, self.now_page * ONE_PAGE_COUNT)print("-" * 80)print(url)print("-" * 80)
这要是还不会那我真的没办法了
看不懂别做爬虫-----python scrapy爬取淘宝相关推荐
- Python爬虫学习之爬取淘宝搜索图片
Python爬虫学习之爬取淘宝搜索图片 准备工作 因为淘宝的反爬机制导致Scrapy不能使用,所以我这里是使用selenium来获取网页信息,并且通过lxml框架来提取信息. selenium.lxm ...
- python爬虫——用selenium爬取淘宝商品信息
python爬虫--用selenium爬取淘宝商品信息 1.附上效果图 2.淘宝网址https://www.taobao.com/ 3.先写好头部 browser = webdriver.Chrome ...
- Python + selenium 爬取淘宝商品列表及商品评论 2021-08-26
Python + selenium 爬取淘宝商品列表及商品评论[2021-08-26] 主要内容 登录淘宝 获取商品列表 获取评论信息 存入数据库 需要提醒 主要内容 通过python3.8+ sel ...
- python爬虫淘宝手机_【Python3 爬虫】14_爬取淘宝上的手机图片
现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 我们可以看到左侧是主题市场,将鼠标移动到[女装/男装/内衣]这一栏目, ...
- Python爬虫实战(5)-爬取淘宝网服装图片(Selenium+Firefox)
前言 今天我们巩固一下前面学过的知识,通过Selenium+Firefox实现模拟浏览器并自动翻页,爬取图片并写入本地文件中. 以搜索"女装"为例,自动爬取"女装&quo ...
- Python requests爬取淘宝商品信息
作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...
- Python入门--爬取淘宝评论并生成词云
Python爬取淘宝评论并生成词云 最新修改于2021/04/01 所需相关Python第三方库(目前最新版本即可) 推荐使用Anaconda,其使用十分方便.快捷. requests库 json库 ...
- python +selenium 爬取淘宝网商品信息
前几天用python爬取豆瓣关于电影<长城>的影评,发现豆瓣的网页是静态的,心中一阵窃喜.以为对于动态网页了解的不是太多.但是主要是用cookie加headers爬取的.效果还不错,爬取了 ...
- 吃货们看好了!python+selenium爬取淘宝美食
前言 今天为大家介绍一个利用Python的selenium打开浏览器的方式来爬去淘宝美食,这个小案例涵盖了selenium的基本知识点,如何打开浏览器以及关键字的搜索 导入第三方库 打开浏览器 搜索功 ...
最新文章
- SWFTools PDF转换为SWF
- 在NamedParameterJdbcTemplate中使用like查询
- 在github上面下载文件夹的方法666
- 新一届暑期积分赛题目记录
- linux htb 源代码,LINUX TC:HTB相关源码
- Easyui Tree 异步加载实例
- 4.1 SE38数据类型
- Java程序员如何选择未来的职业路线
- Java基础(静态static)
- 开发工具总结(6)之Android Studio模板配置详解(提高开发效率必备技能)
- win7录屏_win7电脑怎么录屏?这个实用工具给你答案
- 副业做淘宝可以么?淘宝可以当做副业来做吗?
- 电子邮件邮箱怎么设置签名?手机邮箱签名设置攻略
- 思科 终端服务器的配置
- AES200 软件用户手册
- 主板显卡服务器维修,【转】电脑主板待机供电和显卡供电电路的维修
- sinc函数卷积_11-2 Sinc 函数与矩形脉冲
- 20个免费的网络电话
- 米老师验收ITOOjava5.0------米老师语录
- 【中英文论文写作——图片和表格】
热门文章
- Unity 配合Wallpaper Engine工具,实现电脑桌面壁纸游戏
- 行人重识别论文阅读2-视频中基于时空相关性和拓扑学习的行人重识别(CTL)
- GWAS - PRS多基因风险评分计算学习笔记
- java两个成语交叉,形容相互交叉的成语-交叉出现的成语-互相交叉在一起的成语...
- Matlab:干涉条纹骨化算法|二值化|滤波|去毛刺
- 南京工业大学研究生计算机,南京工业大学计算机研究生每年录取要多少分
- PyTorch + Ray Tune 调参
- xiugai.dizhi.py
- 数值微分法(DDA)详解
- 智慧水利:水库水文监测系统