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