如何从javascript编写的html中解析文本?

如何从javascript编写的html中解析文本?,javascript,json,xpath,web-scraping,scrapy,Javascript,Json,Xpath,Web Scraping,Scrapy,我是scrapy的新手,需要为数据挖掘项目搜集一些数据集。我需要刮一下。跟踪每个链接并提取数据。我已经编写了一个可以工作的scrapy爬虫程序,使用xpth和css获取数据。但我在页面中遇到了这个元素,它使用javascript填充一个选项卡式表。xpath对于每个选项卡都是相同的。因此无法提取单个选项卡的数据 并从每个选项卡获取数据库存收益百分比 我可以从xpath和css中获取数据,但页面的一部分是从javascript中获取的。怎样才能刮取这些数据呢?我还需要每个选项卡的数据 请告诉我这样

我是scrapy的新手,需要为数据挖掘项目搜集一些数据集。我需要刮一下。跟踪每个链接并提取数据。我已经编写了一个可以工作的scrapy爬虫程序,使用xpth和css获取数据。但我在页面中遇到了这个元素,它使用javascript填充一个选项卡式表。xpath对于每个选项卡都是相同的。因此无法提取单个选项卡的数据 并从每个选项卡获取数据库存收益百分比

我可以从xpath和css中获取数据,但页面的一部分是从javascript中获取的。怎样才能刮取这些数据呢?我还需要每个选项卡的数据 请告诉我这样做的方法,因为其他答案使用json,我不熟悉它

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class NewsItem(scrapy.Item):
    name = scrapy.Field()

class StationDetailSpider(CrawlSpider):
    name = 'test2'
    start_urls = ["http://www.moneycontrol.com/india/stockpricequote/"]
    rules = (
    Rule(LinkExtractor(restrict_xpaths="//a[@class='bl_12']"), follow=False, callback='parse_news'),
    Rule(LinkExtractor(allow=r"/diversified/.*$"), callback='parse_news')
)


    def parse_news(self, response):

        item = NewsItem()
        NEWS1_SELECTOR = 'div#disp_nse_hist tr:nth-child(5) > td:nth-child(4)::text'
        TIME1_SELECTOR = 'div#disp_nse_hist tr:nth-child(5) > td:nth-child(4)::text'
        NAME_SELECTOR = 'div#disp_nse_hist tr:nth-child(5) > td:nth-child(4)::text'

        print("------------------------------------starting extraction------------")
        item['name']=response.css(NAME_SELECTOR).extract_first()
        item['time1']=response.css(TIME1_SELECTOR).extract_first()
        item['news1']=response.css(NEWS1_SELECTOR).extract()
        return item
这里包括这一点

您所说的是抓取AJAX页面,这些页面可以动态加载新内容,而无需重新加载整个页面

按照说明去做,你应该没有问题。例如,在您列出的页面中,当您单击不同的时间段(周、月、年等)时,会向

如您所见,url有3个传递给它的查询参数。最后两个表示公司ID和历史定价的天数范围。按照这个链接,你就会明白我在说什么

有了这些知识,您应该能够找出如何修改spider以获取这些信息。

这里将介绍这一点

您所说的是抓取AJAX页面,这些页面可以动态加载新内容,而无需重新加载整个页面

按照说明去做,你应该没有问题。例如,在您列出的页面中,当您单击不同的时间段(周、月、年等)时,会向

如您所见,url有3个传递给它的查询参数。最后两个表示公司ID和历史定价的天数范围。按照这个链接,你就会明白我在说什么

有了这些知识,您应该能够找到如何修改爬行器来抓取这些信息。

请查看splash:,它是一个用于scrapy的呈现服务,允许您抓取基于javascript的网站

您还可以创建自己的下载器中间件并使用Selenium:

希望这能有所帮助。

查看splash:,这是一个用于scrapy的呈现服务,它允许您对基于javascript的网站进行抓取

您还可以创建自己的下载器中间件并使用Selenium:


希望这能有所帮助。

您使用什么环境进行刮削?如果页面像你说的那样是动态的,那么你需要像phantomjs这样的东西。哦,这是一个python问题,与javascript无关,因为python没有javascript引擎,所以我无法使用python从html中提取javscript结果?我非常怀疑你使用的是什么环境进行抓取?如果页面像你说的那样是动态的,那么你需要像phantomjs这样的东西。哦,这是python的问题,与javascript无关,因为python没有javascript引擎,所以我无法使用python从html中提取javscript结果?我非常怀疑它,我认为增益百分比不准确。你能告诉我你是如何获得此链接的吗。如果你的链接是针对3M india的,我如何找到该公司的sc_id,以便致电Sasty了解此lnkI不认为增益百分比是准确的。你能告诉我你是如何获得此链接的。如果您的链接是针对3M india的,我如何找到该公司的sc_id,以便致电Skasty了解此lnk