gpt4 book ai didi

python - Scrapy 蜘蛛输出 empy csv 文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:50 31 4
gpt4 key购买 nike

这是我在这里的第一个问题,我正在学习如何自己编写代码,所以请耐心等待。

我正在做一个最终的 CS50 项目,我正在尝试建立一个网站,该网站可能会聚合来自 edx.org 和其他开放在线类(class)网站的在线西类牙语类(class)。我正在使用 scrapy 框架来删除 edx.org 上西类牙语类(class)的过滤结果...这是我的第一个 scrapy 蜘蛛,我试图在每个类(class)链接中获取它然后获取它的名称(在我获得正确的代码之后,还可以获取描述、类(class) URL 和更多内容)。

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 文件,我也认为没有进入正确的西类牙语类(class)结果。

基本上我想进入这个链接的每个类(class)edx Spanish courses并获取名称、描述、提供者、页面 url 和 img url。

关于为什么可能是问题的任何想法?

最佳答案

您无法通过简单的请求获取 edx 内容,它使用 javascript 呈现来动态获取类(class)元素,因此 CrawlSpider 不会在这种情况下工作,因为您需要在响应主体中找到特定的元素以生成一个新的请求来获取您需要的内容。

真正的请求(获取类(class)的 URL)是 this one ,但您需要从先前的响应主体生成它(尽管您可以只访问它并获得正确的数据)。

因此,要生成真正的请求,您需要在 script 标记内的数据:

from scrapy import Spider
import re
import json

class Course_spider(Spider):
name = 'CourseSpider'
allowed_domains = ['edx.org']
start_urls = ['https://www.edx.org/course/?language=Spanish']

def parse(self, response):
script_text = response.xpath('//script[contains(text(), "Drupal.settings")]').extract_first()
parseable_json_data = re.search(r'Drupal.settings, ({.+})', script_text).group(1)
json_data = json.loads(parseable_json_data)
...

现在你在 json_data 上有了你需要的东西,只需要创建字符串 URL。

关于python - Scrapy 蜘蛛输出 empy csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065020/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com