吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1290|回复: 6
收起左侧

[求助] scrapy新人求教

[复制链接]
heeler 发表于 2021-9-5 21:04
50吾爱币
这是我的scrapy代码:链接:https://pan.baidu.com/s/1UfKrtqxm6jCrFTwsAdPZNw
提取码:0n25
错误:生成的book.csv没有任何内容
怀疑:
````

from scrapy_book.items import ScrapyBookItem
    def parse_detail_page(self,response):
        book=ScrapyBookItem()
        book['name']=response.xpath('//div[@class="col-sm-6product_main"]/h1/text()').get()
        book['price']=response.xpath('//div[@class="col-sm-6product_main"]/p/text()').get()
        book['stars']=response.xpath('//p[contains(@class,"star-rating")]/@class').get().split()[1]
        book['reviews']=response.xpath('//table[@class="tabletable-striped"]/tr[last()]/td/text()').get()
        yield book
````
这段代码不知道放在何处,求指导

最佳答案

查看完整内容

这段代码是导入了scrapy_book项目中的items.py文件内的ScrapyBookItem类,items文件是用来定义模板的。你这段代码应该是自定义了一个解析方法,如果要使用这个方法,那么需要使用meta进行传参,不过你这个应该是起始链接的解析方法,所以可以将这个方法下面的代码放到def parse(self, response)这个方法下面,不过我看了一下你的代码,说实话,没看懂,因为你这个代码用了链接提取,这个应该是使用crawlspider类创建的的,就是在创 ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

翎封苍穹 发表于 2021-9-5 21:04
这段代码是导入了scrapy_book项目中的items.py文件内的ScrapyBookItem类,items文件是用来定义模板的。你这段代码应该是自定义了一个解析方法,如果要使用这个方法,那么需要使用meta进行传参,不过你这个应该是起始链接的解析方法,所以可以将这个方法下面的代码放到def parse(self, response)这个方法下面,不过我看了一下你的代码,说实话,没看懂,因为你这个代码用了链接提取,这个应该是使用crawlspider类创建的的,就是在创建爬虫文件的时候使用 scrapy genspider -t crawl name domains 这个命令格式创建的,但是里面的格式就是你使用spider类创建的,也就是scrapy genspider book books.toscrape.com 这个命令创建的,所以我也看不懂,就只知道你要爬取那个网站的书名等信息,而且你那xpath解析拿到那个网站上查找之后找不到结果。所以我就自己写了一个scrapy爬虫,希望对楼主有所帮助吧!还有就是,技术有限,只能把数据存储到Excel中,csv怎么存储数据还没有研究过(reviews的数据没有找到,详情页也找了!)
链接:https://pan.baidu.com/s/1GryaTxoXpi7FOopnWBX49g
提取码:slxs
--来自百度网盘超级会员V5的分享
翎封苍穹 发表于 2021-9-6 02:13
scrapy框架保存数据的代码是写到pipelines.py中的,写完之后记得去settings.py将里面的ITEM_PIPELINES注释掉
subney 发表于 2021-9-6 07:31
 楼主| heeler 发表于 2021-9-6 08:15
翎封苍穹 发表于 2021-9-5 21:04
这段代码是导入了scrapy_book项目中的items.py文件内的ScrapyBookItem类,items文件是用来定义模板的。你这 ...

感谢大佬,我昨晚第一次接触scrapy,跟着别人的pdf学的,结果上面的实战项目一个都没过。。。
glces 发表于 2021-9-6 10:04
我没有仔细看你的xpath表达式写的是否正确。就从代码逻辑上说吧!
1. 调试一下代码,下个断点就能看到你的url重复被过滤了。你这个代码我看着是一言难尽,为什么入口了以后再重新request这个入口url。这样url重复了不是被过滤了吗?如果硬要这样操作,必须在request的时候加上 dont_filter=True参数
2. 代码里的包
from scrapy_book.items import ScrapyBookItem
from scrapy.linkextractors import LinkExtractor
都没有导入,我不知道怎么能运行的
3. setting里的 ITEM_PIPELINES 都没有开, 也就是说管道并不会运行呀。怎么可能能保存数据呢!

兄弟,你这完全是面向复制粘贴编程啊。对着教程做下笔记, 然后debug一下代码,单步一下才能记住这些问题呀!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表