关于json:如何解析javascript写的html中的文本?

How to parse text from html being written by javascript?

我是个新手,需要为数据挖掘项目搜集一些数据集。我需要抓取"http://www.moneycontrol.com/india/stockpricequote/"。跟踪每个链接并提取数据。我曾经用xpth和css编写了一个工作垃圾爬虫程序来获取数据,但是我在page中遇到了这个元素,它使用javascript来填充一个选项卡表。每个选项卡的xpath都相同。因此无法提取单个选项卡的数据。并从每个标签中获取数据股票收益百分比这是最后一列第5行中带有增益百分比的标签元素

我可以从xpath和css中获取数据,但页面的一部分是从javascript获取的。如何才能刮取这样的数据?我还需要每个标签的数据请告诉我一种方法,因为其他答案使用JSON,我对此不熟悉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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


查看splash:http://splash.readthedocs.io/en/stable/,它是一个scrappy的呈现服务,允许您对基于javascript的网站进行爬行。

您还可以创建自己的下载器中间件并使用Selenium:如何为Selenium和Scrapy编写定制的下载器中间件?

希望这有帮助。


这里介绍了https://stackoverflow.com/a/8594831/7892562

您所说的是刮擦Ajax页面,这些页面可以动态加载新内容,而无需重新加载整个页面。

按照说明操作,你应该没有问题。作为所列页面的示例,当您单击不同的时间段(周、月、年等)时,将请求

http://www.moneycontrol.com/stocks/company_info/get_histprices.php?ex=b&sc_id=b3m&range=7

如您所见,URL传递了3个查询参数。最后两个指示历史定价的公司ID和天数范围。通过这个链接,你会看到我在说什么。

鉴于这些知识,您应该能够了解如何修改您的蜘蛛来获取这些信息。