Javascript Scrapy tbody标记返回一个空答案,但里面有文本

Javascript Scrapy tbody标记返回一个空答案,但里面有文本,javascript,python,html,ajax,scrapy,Javascript,Python,Html,Ajax,Scrapy,我试着废弃和爬网一个网站。数据位于tbody标记(事件名称)中。 当我检查google控制台时,tbody标记有文本数据,但当我尝试取消它时,它返回一个空的答案(也在scrapy shell中测试)。我检查了AJAX方法,因为它可以对脚本进行bug,但它似乎没有 你知道为什么答案是空的,而tbody标记在源代码中有文本吗? 这是我的代码 nom_robot = 'ListeCAP' domaine = ['www.justrunlah.com'] base_url = [ "http

我试着废弃和爬网一个网站。数据位于tbody标记(事件名称)中。 当我检查google控制台时,tbody标记有文本数据,但当我尝试取消它时,它返回一个空的答案(也在scrapy shell中测试)。我检查了AJAX方法,因为它可以对脚本进行bug,但它似乎没有

你知道为什么答案是空的,而tbody标记在源代码中有文本吗?

这是我的代码

nom_robot = 'ListeCAP' 
domaine = ['www.justrunlah.com'] 
base_url = [
    "https://www.justrunlah.com/running-events-calendar-malaysia",
    "https://www.justrunlah.com/running-events-calendar-australia",
]

class ListeCourse_level1(scrapy.Spider):
    name = nom_robot
    allowed_domains = domaine
    start_urls = base_url 

    def parse(self, response):    

        selector = Selector(response)

        for unElement in response.xpath('//*[@id="td-outer-wrap"]/div[3]/div/div/div[1]/div/div[2]/div[3]/table/tbody/tr'): 
            loader = ItemLoader(JustrunlahItem(), selector=unElement)
            loader.add_xpath('eve_nom_evenement', './/td[2]/div/div[1]/div/a/text()')

        # define processors
            loader.default_input_processor = MapCompose(string) 
            loader.default_output_processor = Join()
            yield loader.load_item()
            yield loader.load_item()
            if response.xpath('//a[@class="smallpagination"]'):
                next_page = response.meta.get('page_number', 1) + 1
                next_page_url = '{}?page={}'.format(base_url, next_page)
                yield scrapy.Request(next_page_url, callback=self.parse, meta={'page_number': next_page}) 
终端窗口

['https://www.justrunlah.com/running-events-calendar-malaysia/', 'https://www.justrunlah.com/running-events-calendar-australia/']
-----------------------------
2018-03-08 12:34:56 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: justrunlah)
2018-03-08 12:34:56 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'justrunlah', 'NEWSPIDER_MODULE': 'justrunlah.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['justrunlah.spiders']}
2018-03-08 12:34:56 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.logstats.LogStats']
2018-03-08 12:34:57 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-03-08 12:34:57 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
NOM TABLE EN SORTIE :
import_brut_['www.justrunlah.com']
2018-03-08 12:34:57 [scrapy.middleware] INFO: Enabled item pipelines:
['justrunlah.pipelines.JustrunlahPipeline']
2018-03-08 12:34:57 [scrapy.core.engine] INFO: Spider opened
2018-03-08 12:34:57 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2018-03-08 12:34:57 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6024
2018-03-08 12:34:57 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.justrunlah.com/robots.txt> (referer: None)
2018-03-08 12:34:58 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.justrunlah.com/running-events-calendar-malaysia/> (referer: None)
2018-03-08 12:34:58 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.justrunlah.com/running-events-calendar-australia/> (referer: None)
--------------------------------------------------
                SCRAPING DES ELEMENTS EVENTS
--------------------------------------------------
--------------------------------------------------
                SCRAPING DES ELEMENTS EVENTS
--------------------------------------------------
2018-03-08 12:34:58 [scrapy.core.engine] INFO: Closing spider (finished)
2018-03-08 12:34:58 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 849,
 'downloader/request_count': 3,
 'downloader/request_method_count/GET': 3,
 'downloader/response_bytes': 76317,
 'downloader/response_count': 3,
 'downloader/response_status_count/200': 3,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2018, 3, 8, 11, 34, 58, 593309),
 'log_count/DEBUG': 4,
 'log_count/INFO': 7,
 'response_received_count': 3,
 'scheduler/dequeued': 2,
 'scheduler/dequeued/memory': 2,
 'scheduler/enqueued': 2,
 'scheduler/enqueued/memory': 2,
 'start_time': datetime.datetime(2018, 3, 8, 11, 34, 57, 419191)}
2018-03-08 12:34:58 [scrapy.core.engine] INFO: Spider closed (finished)
['https://www.justrunlah.com/running-events-calendar-malaysia/', 'https://www.justrunlah.com/running-events-calendar-australia/']
-----------------------------
2018-03-08 12:34:56[scrapy.utils.log]信息:scrapy 1.4.0已启动(机器人程序:justrunlah)
2018-03-08 12:34:56[scrapy.utils.log]信息:覆盖的设置:{'BOT_NAME':'justrunlah','NEWSPIDER_MODULE':'justrunlah.SPIDER','ROBOTSTXT_-obe':True,'SPIDER_MODULES':['justrunlah.SPIDER']
2018-03-08 12:34:56[scrapy.middleware]信息:启用的扩展:
['scrapy.extensions.corestats.corestats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.logstats.logstats']
2018-03-08 12:34:57[剪贴簿中间件]信息:启用的下载程序中间件:
['scrapy.downloaderMiddleware.robotstxt.RobotsTxtMiddleware',
'scrapy.downloaderMiddleware.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddleware.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloaderMiddleware.defaultheaders.DefaultHeadersMiddleware',
'scrapy.DownloaderMiddleware.useragent.UserAgentMiddleware',
'scrapy.DownloaderMiddleware.retry.RetryMiddleware',
'scrapy.DownloaderMiddleware.redirect.MetaRefreshMiddleware',
'scrapy.DownloaderMiddleware.httpcompression.HttpCompressionMiddleware',
'scrapy.DownloaderMiddleware.redirect.RedirectMiddleware',
“scrapy.DownloaderMiddleware.cookies.CookiesMiddleware”,
'scrapy.downloadermiddleware.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddleware.stats.DownloaderStats']
2018-03-08 12:34:57[scrapy.middleware]信息:启用的蜘蛛中间件:
['scrapy.spidermiddleware.httperror.httperror中间件',
'刮皮.SpiderMiddleware.场外.场外Iddleware',
“scrapy.Spidermiddleware.referer.RefererMiddleware”,
'scrapy.spiderMiddleware.urllength.UrlLengthMiddleware',
'scrapy.spidermiddleware.depth.DepthMiddleware']
出动架次表名:
导入brut['www.justrunlah.com']
2018-03-08 12:34:57[scrapy.middleware]信息:启用的项目管道:
['justrunlah.pipelines.JustrunlahPipeline']
2018-03-08 12:34:57[刮屑.堆芯.发动机]信息:十字轴已打开
2018-03-08 12:34:57[scrapy.extensions.logstats]信息:爬网0页(0页/分钟),爬网0项(0项/分钟)
2018-03-08 12:34:57[scrapy.extensions.telnet]调试:telnet控制台监听127.0.0.1:6024
2018-03-08 12:34:57[刮屑核心引擎]调试:爬网(200)(参考:无)
2018-03-08 12:34:58[刮屑核心引擎]调试:爬网(200)(参考:无)
2018-03-08 12:34:58[刮屑核心引擎]调试:爬网(200)(参考:无)
--------------------------------------------------
删除DES元素事件
--------------------------------------------------
--------------------------------------------------
删除DES元素事件
--------------------------------------------------
2018-03-08 12:34:58[刮屑芯发动机]信息:关闭卡盘(已完成)
2018-03-08 12:34:58[scrapy.statscollectors]信息:倾销scrapy统计数据:
{'downloader/request_bytes':849,
“下载程序/请求计数”:3,
“下载程序/请求方法\计数/获取”:3,
“downloader/response_字节”:76317,
“下载程序/响应计数”:3,
“下载/响应状态\计数/200”:3,
“完成原因”:“完成”,
“完成时间”:datetime.datetime(2018,3,8,11,34,58593309),
“日志计数/调试”:4,
“日志计数/信息”:7,
“收到的响应数”:3,
“调度程序/出列”:2,
“调度程序/出列/内存”:2,
“调度程序/排队”:2,
“调度程序/排队/内存”:2,
“开始时间”:datetime.datetime(2018,3,8,11,34,57,419191)}
2018-03-08 12:34:58[刮屑堆芯发动机]信息:十字轴关闭(完成)
和刮擦的外壳


我假设您正在尝试选择所有事件名称,如果是这样,您可以将其用作xpath
/*[@class=“cal2table”]/tbody/tr/td[2]/div/div[1]/div/a/text()

因此,我相信您遇到的问题是由于您的xpath定义造成的,没有任何关于您试图选择什么的进一步信息。这是我能给出的最佳答案

提示一下,您可以在Chrome/Firefox控制台中使用以下命令来测试xpath:
$x('/*[@class=“cal2table”]/tbody/tr/td[2]/div/div[1]/div/a/text())

若要在当前尝试加载项目时使用此选项,请尝试以下代码段。我还没有测试过,所以你可能需要做一些小的调整

xpath('//*[@class=“cal2table”]//tr'): loader=ItemLoader(JustrunlahItem(),选择器=unElement) loader.add_xpath('eve_nom_evennement','。//td[2]/div/div[1]/div/a/text()

这是一个常见问题:有时表的源HTML中没有
tbody
标记(现代浏览器会自动将其添加到DOM中)。因此,请始终检查HTML源代码:


只要从xpath或css表达式中删除
tbody
,它就会工作


现代浏览器以向表中添加
tbody
元素而闻名。另一方面,Scrapy不会修改原始页面HTML,因此如果在XPath表达式中使用
tbody
,则无法提取任何数据。

您试图在页面上选择什么?您尝试使用的初始xpath返回一个空对象数组。是的,您是对的,我正在尝试取消几个URL和下一页(如果存在)中的所有事件名称。我试过你的xpath,但还是不行
//*[@class="cal2table"]//tr/td[2]/div/div[1]/div/a/text()