首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >xpath无法识别标记的谓词

xpath无法识别标记的谓词
EN

Stack Overflow用户
提问于 2018-06-02 06:00:39
回答 1查看 41关注 0票数 0

我尝试使用scrapy xpath来抓取页面,但是当我使用for循环时,它似乎不能捕获带有谓词的标记,# This package将包含Scrapy项目的爬行器

代码语言:javascript
复制
from cunyfirst.items import CunyfirstSectionItem
import scrapy
import json

class CunyfristsectionSpider(scrapy.Spider):
name = "cunyfirst-section-spider"
start_urls = ["file:///Users/haowang/Desktop/section.htm"]

def parse(self, response):
    url = response.url
    yield scrapy.Request(url, self.parse_page)

def parse_page(self, response):

    n = -1
    for section in response.xpath("//a[contains(@name,'MTG_CLASS_NBR')]"):
        print(response.xpath("//a[@name ='MTG_CLASSNAME$10']/text()"))

        n += 1

        class_num = section.xpath('text()').extract_first()
        # print(class_num)
        classname = "MTG_CLASSNAME$" + str(n)
        date = "MTG_DAYTIME$" + str(n)
        instr = "MTG_INSTR$" + str(n)
        print(classname)

        class_name = response.xpath("//a[@name = classname]/text()")

我正在寻找一个名称为"MTG_CLASSNAME$“+ str(n)的标记,其中n是0,1,2...,并且从我的xpath查询中得到的输出为空。不知道为什么..。

PS。我基本上是试图从https://hrsa.cunyfirst.cuny.edu/psc/cnyhcprd/GUEST/HRMS/c/COMMUNITY_ACCESS.CLASS_SEARCH.GBL?FolderPath=PORTAL_ROOT_OBJECT.HC_CLASS_SEARCH_GBL&IsFolder=false&IgnoreParamTempl=FolderPath%252cIsFolder&PortalActualURL=https%3a%2f%2fhrsa.cunyfirst.cuny.edu%2fpsc%2fcnyhcprd%2fGUEST%2fHRMS%2fc%2fCOMMUNITY_ACCESS.CLASS_SEARCH.GBL&PortalContentURL=https%3a%2f%2fhrsa.cunyfirst.cuny.edu%2fpsc%2fcnyhcprd%2fGUEST%2fHRMS%2fc%2fCOMMUNITY_ACCESS.CLASS_SEARCH.GBL&PortalContentProvider=HRMS&PortalCRefLabel=Class%20Search&PortalRegistryName=GUEST&PortalServletURI=https%3a%2f%2fhome.cunyfirst.cuny.edu%2fpsp%2fcnyepprd%2f&PortalURI=https%3a%2f%2fhome.cunyfirst.cuny.edu%2fpsc%2fcnyepprd%2f&PortalHostNode=ENTP&NoCrumbs=yes上抓取课程和他们的信息,并应用过滤器: Kingsborough CC,fall 18,BIO

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 06:37:30

好吧..。我已经访问了你在问题描述中放置的网站,我使用了元素检查并搜索了"MTG_CLASSNAME“,我得到了0个匹配项...

所以我会给你一些工具:

  • In your settings.py set:

LOG_FILE = "log.txt“

LOG_STDOUT=True

然后将响应正文( response.body )打印到您应该打印的位置(本例中是在parse_page函数的顶部),并在log.txt

  • 中搜索它。

此外,将for section in response.xpath("//a[contains(@name,'MTG_CLASS_NBR')]"):更改为for section in response.xpath("//a[contains(@name,'MTG_CLASS_NBR')]").extract():,这将在获取您要查找的数据时引发错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档