- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是我在这里的第一个问题,我正在学习如何自己编写代码,所以请耐心等待。
我正在做一个最终的 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/
很抱歉我无法提供我的代码的更多细节,因为我正在接管另一个项目。类结构非常复杂,我无法使用一个简单的示例重现该问题。 本质上,如果我删除一个对象,析构函数中的所有语句都会成功执行,但是一旦析构函数完成执
这是我在这里的第一个问题,我正在学习如何自己编写代码,所以请耐心等待。 我正在做一个最终的 CS50 项目,我正在尝试建立一个网站,该网站可能会聚合来自 edx.org 和其他开放在线类(class)
我有一个返回实体列表的 ui:repeat。有什么办法可以知道返回的列表是空的吗? list.name 如果 ui:repeat 为空则显示一个 div 说“List is empty” 我
我有一个简单的 VBA 代码,它使用 CopyPicture 复制范围(一些图表和表格)并将其保存为 .gif 文件。屏幕解锁时一切正常,但锁定时,Excel 会时不时抛出 1004 错误:“无法清空
我正在尝试用特定图片训练 Tesseract 4(以读取具有 7 段的万用表), 请注意,我知道来自 Arthur Augusto 的所有训练数据 https://github.com/arturau
我正在尝试安装用于在 Linux 上构建 Px4 的工具链。 当我给出以下命令时,我遇到了以下错误: sudo apt-get install python-argparse git-core wge
目前我正在使用 Pandas 和 Excel。我有很多 empy 单元格要处理的 excel 表。 Pandas 在解析时将它们识别为 Nan 值。我知道如何通过将其传递给 pandas excel
我是一名优秀的程序员,十分优秀!