【发布时间】:2018-06-12 09:33:30
【问题描述】:
这是我在这里的第一个问题,我正在学习如何自己编码,所以请多多包涵。
我正在做一个最终的 CS50 项目,我正在尝试构建一个网站,该网站可能会汇总来自 edx.org 和其他开放在线课程网站的在线西班牙语课程。我正在使用scrapy框架来废弃edx.org上西班牙语课程的过滤结果......这是我的第一个scrapy蜘蛛,我试图在每个课程链接中获取它的名称(在我得到正确的代码之后,还可以获取描述、课程网址和更多内容)。
from scrapy.item import Field, Item
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractor import LinkExtractor
from scrapy.loader import ItemLoader
class Course_item(Item):
name = Field()
#description = Field()
#img_url = Field()
class Course_spider(CrawlSpider):
name = 'CourseSpider'
allowed_domains = ['https://www.edx.org/']
start_urls = ['https://www.edx.org/course/?language=Spanish']
rules = (Rule(LinkExtractor(allow=r'/course'), callback='parse_item', follow='True'),)
def parse_item(self, response):
item = ItemLoader(Course_item, response)
item.add_xpath('name', '//*[@id="course-intro-heading"]/text()')
yield item.load_item()
当我使用“scrapy runspider edxSpider.py -o edx.csv -t csv”运行蜘蛛时,我得到一个空的 csv 文件,我也认为没有进入正确的西班牙语课程结果。
基本上我想进入这个链接edx Spanish courses的每个课程,并获取名称、描述、提供者、页面url和img url。
关于为什么会出现问题的任何想法?
【问题讨论】:
-
allowed_domains应该只列出“域”,因此将其更改为仅edx.org -
谢谢我修复了那个部分,但它仍然输出一个空的 CSV
-
必须使用 Scrapy 吗?如果没有,请查看答案:stackoverflow.com/questions/33109431/course-list-from-edx-api
-
当我使用 DevTool 检查页面时,我看到很多
class="course-intro-heading"但没有一个id="course-intro-heading" -
您没有收到任何错误吗?运行您的代码时出现一些错误。
标签: python csv web-scraping scrapy scrapy-spider