|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目的:想把天猫女装页面的商品名称和价格抓取出来 ,还有对应的店铺名称(这个想要通过商品链接进去详细页面之后抓取)
这个是不是属于多级页面的抓取...但是结果显示我并没有抓取到信息 不知道问题出在哪里 求高手指点
代码如下:
- # -*- coding: utf-8 -*-
- import scrapy
- from topgoods.items import TopgoodsItem
- class TmGoodsSpider(scrapy.Spider):
- name = "tm_goods"
- allowed_domains = ["http://www.tmall.com"]
- start_urls = ['https://list.tmall.com/search_product.htm?spm=a220m.1000858.1000724.4.lBvqIw&q=%C5%AE%D7%B0&sort=d&style=g&from=mallfp..pc_1_searchbutton#J_Filter/']
- count = 0
- def parse(self, response):
- TmGoodsSpider.count += 1 #记录爬取的页面
- sites = response.xpath('//div[@id="J_ItemList"]/div[@class="product"]/div')
-
- if not sites:
- self.log("List Page error--%s" % response.url) #判断位置是否存在
- for site in sites:
- item = TopgoodsItem()
- item['GOODS_NAME'] = site.xpath('p/a/text()')[0].extract() #商品名称
- pre_goods_url = site.xpath('p/a/@href')[0].extract()
- item['GOODS_URL'] = pre_goods_url if "http:" in pre_goods_url else ("http:" + pre_goods_url) #商品链接
- yield scrapy.Request(url=item["GOODS_URL"], meta={'item':item}, callbacak=self.parse_detail, dont_filter=True) #这个是将链接作为response传到下面这个函数?
- def parse_detail(self, response):
- sites = response.xpath('//*[@id="side-shop-info"]/div[1]/h3/div') #这是详细信息页面的 xpath
- if not sites:
- self.log("Detail Page error--%s" % response.url) #同上,判断位置是否存在
- item = response.meta['item'] #这个是将之前的商品名称和链接传入 继续保存
- for site in sites:
-
- item['SHOP_NAME'] = site.xpath('a/text()').extract()
- yield item
-
复制代码
最后把文件存为csv格式 ,还有命令行显示的信息存为日志 ,不知道哪里出了问题
items 代码如下:
- import scrapy
- class TopgoodsItem(scrapy.Item):
- # define the fields for your item here like:
- # name = scrapy.Field()
- GOODS_NAME = scrapy.Field()
- GOODS_URL = scrapy.Field()
- SHOP_NAME = scrapy.Field()
复制代码
settings中更改了的代码如下:
- DOWNLOADER_MIDDLEWARES = {
- #'topgoods.middlewares.MyCustomDownloaderMiddleware': 543,
- 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
- }
- LOG_FILE = "scrapy.log" #命令行存为scrapy.log
复制代码
其他的文件都没有改过....然后我用的是python 3.6 window7操作系统 。
下面是我输入 scrapy crawl tm_goods -o data.csv 之后命令行的信息:
- 2017-03-20 11:39:12 [scrapy.utils.log] INFO: Scrapy 1.3.2 started (bot: topgoods)
- 2017-03-20 11:39:12 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'topgoods', 'LOG_ENABLED': False, 'LOG_FILE': 'scrapy.log', 'NEWSPIDER_MODULE': 'topgoods.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['topgoods.spiders']}
- 2017-03-20 11:39:26 [scrapy.utils.log] INFO: Scrapy 1.3.2 started (bot: topgoods)
- 2017-03-20 11:39:26 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'topgoods', 'FEED_FORMAT': 'csv', 'FEED_URI': 'data.csv', 'LOG_FILE': 'scrapy.log', 'NEWSPIDER_MODULE': 'topgoods.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['topgoods.spiders']}
- 2017-03-20 11:39:26 [scrapy.middleware] INFO: Enabled extensions:
- ['scrapy.extensions.corestats.CoreStats',
- 'scrapy.extensions.telnet.TelnetConsole',
- 'scrapy.extensions.feedexport.FeedExporter',
- 'scrapy.extensions.logstats.LogStats']
- 2017-03-20 11:39:26 [py.warnings] WARNING: c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\scrapy\utils\deprecate.py:156: ScrapyDeprecationWarning: `scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware` class is deprecated, use `scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware` instead
- ScrapyDeprecationWarning)
- 2017-03-20 11:39:27 [scrapy.middleware] INFO: Enabled downloader middlewares:
- ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
- 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
- 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
- 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
- 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
- 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
- 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
- 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
- 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
- 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
- 'scrapy.downloadermiddlewares.stats.DownloaderStats']
- 2017-03-20 11:39:27 [scrapy.middleware] INFO: Enabled spider middlewares:
- ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
- 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
- 'scrapy.spidermiddlewares.referer.RefererMiddleware',
- 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
- 'scrapy.spidermiddlewares.depth.DepthMiddleware']
- 2017-03-20 11:39:27 [scrapy.middleware] INFO: Enabled item pipelines:
- []
- 2017-03-20 11:39:27 [scrapy.core.engine] INFO: Spider opened
- 2017-03-20 11:39:27 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
- 2017-03-20 11:39:27 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
- 2017-03-20 11:39:27 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://list.tmall.com/robots.txt> (referer: None)
- 2017-03-20 11:39:27 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://list.tmall.com/search_product.htm?spm=a220m.1000858.1000724.4.lBvqIw&q=%C5%AE%D7%B0&sort=d&style=g&from=mallfp..pc_1_searchbutton#J_Filter/>
- 2017-03-20 11:39:27 [scrapy.core.engine] INFO: Closing spider (finished)
- 2017-03-20 11:39:27 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
- {'downloader/exception_count': 1,
- 'downloader/exception_type_count/scrapy.exceptions.IgnoreRequest': 1,
- 'downloader/request_bytes': 222,
- 'downloader/request_count': 1,
- 'downloader/request_method_count/GET': 1,
- 'downloader/response_bytes': 291,
- 'downloader/response_count': 1,
- 'downloader/response_status_count/200': 1,
- 'finish_reason': 'finished',
- 'finish_time': datetime.datetime(2017, 3, 20, 3, 39, 27, 525192),
- 'log_count/DEBUG': 3,
- 'log_count/INFO': 7,
- 'log_count/WARNING': 1,
- 'response_received_count': 1,
- 'scheduler/dequeued': 1,
- 'scheduler/dequeued/memory': 1,
- 'scheduler/enqueued': 1,
- 'scheduler/enqueued/memory': 1,
- 'start_time': datetime.datetime(2017, 3, 20, 3, 39, 27, 71175)}
- 2017-03-20 11:39:27 [scrapy.core.engine] INFO: Spider closed (finished)
复制代码
这个样子是没有报错吧..看不懂...只看懂了爬取了0条信息 求解答
你先好好看看网页的源代码中有没有你要提取的信息,先确定这个是不是JS加载的吧
我爬过天猫的信息,全部是都是JS文件加载的,原网页根本没有信息,有的还需要提供cookie
偷偷告诉你,去爬手机端的信息会简单很多,天猫的信息能看到的我都已经爬过了,都能爬取到
再不行,selenium也能搞定 
|
|