在 aspx 中使用 scrapy.FormRequest 获取数据
Fetch data using scrapy.FormRequest in aspx
我是 Python 的新手,并且很容易上手。我有一个从 aspx 网页获取数据并存储值的项目。我应该每天获取 1000 页这样的值。看起来很容易,但我做不到。
这是网页http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042 that I should scrape! I look at the code from chrome
红框每天更新,这是源码
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
</div>
<div id="tabs" class="InsInfoTab"></div>
<div id="MainBox" class="box1 zFull silver">
<div id="MainContent" class="tabcontent content">
<div id="TopBox"></div>
我需要的所有数据都包含在 TobBox 中,
chrome中的网络选项卡显示了数据翻译,但没有我想要获取的信息
我更喜欢使用 scrapy,因为我每天有很多页面要获取。我也用了scrapy.FromRequest
但是我没有得到我想要的< div id='topbox' ...>
的信息!这意味着我得到的数据是 esle forexample 我需要的值之一是 28688000000
但下面代码中的数据是别的东西。
import scrapy
class SpidyQuotes(scrapy.Spider):
name = 'spidyquotes-viewstate'
start_urls = ['http://tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042']
download_delay = 1.5
def parse(self, response):
self.log('A response from %s just arrived!' % response.url)
return scrapy.FormRequest(
'http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=35366681030756042&c=23%20',
)
我没有为此设置一个 scrapy 项目,但你能试试吗?
import requests
headers = {
"referer": "http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
print(requests.get("http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=35366681030756042&c=23%20", headers=headers).text)
输出:
12:30:00,A ,22860,22500,22600,23040,23500,21890,29025,107770816,2424554373560,1,20201111,123000;;44@121810@22850@22850@254506@60,2@2400@22840@22860@4652@6,3@36529@22810@22880@629@1,;95523,610991,381092;;;;0;
这有点像你的数据。
编辑:
我很确定这就是您要查找的数据。 table 的某些部分可能 是静态的,但我不是 100% 确定。但是,响应取决于您做出响应的时间。多试几次,你会得到不同的结果。
例如:
12:29:59,A ,23620,23540,23100,22500,23620,23100,6812,32872444,773767679280,0,20201114,122959;99/8/24 13:31:11,F,1247591.37,<div class='pn'>26516.85</div> 2.17%,47421383985982830,5039085007,61918112976496,730494,P,2229923171,42233712134879,761621,P,2247810,86754663785,3726,;1980@12346584@23620@23660@434@1,11@7181@23610@23700@4000@2,28@61104@23600@23790@2000@1,;95579,611671,381092;31872444,1000000,0,20603084,12269360,2242,1,0,3575,8;;;0;
此外,您可以获得包含历史数据的整个 .csv
文件。
方法如下:
import requests
headers = {
"referer": "http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
export_url = "http://tsetmc.com/tsev2/data/Export-txt.aspx?t=i&a=1&b=0&i=35366681030756042"
export = requests.get(export_url, headers=headers).text
with open("oil_data.csv", "w") as f:
f.write(export)
这就是你得到的结果:
我是 Python 的新手,并且很容易上手。我有一个从 aspx 网页获取数据并存储值的项目。我应该每天获取 1000 页这样的值。看起来很容易,但我做不到。
这是网页http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042 that I should scrape! I look at the code from chrome
红框每天更新,这是源码
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
</div>
<div id="tabs" class="InsInfoTab"></div>
<div id="MainBox" class="box1 zFull silver">
<div id="MainContent" class="tabcontent content">
<div id="TopBox"></div>
我需要的所有数据都包含在 TobBox 中,
chrome中的网络选项卡显示了数据翻译,但没有我想要获取的信息
我更喜欢使用 scrapy,因为我每天有很多页面要获取。我也用了scrapy.FromRequest
但是我没有得到我想要的< div id='topbox' ...>
的信息!这意味着我得到的数据是 esle forexample 我需要的值之一是 28688000000
但下面代码中的数据是别的东西。
import scrapy
class SpidyQuotes(scrapy.Spider):
name = 'spidyquotes-viewstate'
start_urls = ['http://tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042']
download_delay = 1.5
def parse(self, response):
self.log('A response from %s just arrived!' % response.url)
return scrapy.FormRequest(
'http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=35366681030756042&c=23%20',
)
我没有为此设置一个 scrapy 项目,但你能试试吗?
import requests
headers = {
"referer": "http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
print(requests.get("http://www.tsetmc.com/tsev2/data/instinfofast.aspx?i=35366681030756042&c=23%20", headers=headers).text)
输出:
12:30:00,A ,22860,22500,22600,23040,23500,21890,29025,107770816,2424554373560,1,20201111,123000;;44@121810@22850@22850@254506@60,2@2400@22840@22860@4652@6,3@36529@22810@22880@629@1,;95523,610991,381092;;;;0;
这有点像你的数据。
编辑:
我很确定这就是您要查找的数据。 table 的某些部分可能 是静态的,但我不是 100% 确定。但是,响应取决于您做出响应的时间。多试几次,你会得到不同的结果。
例如:
12:29:59,A ,23620,23540,23100,22500,23620,23100,6812,32872444,773767679280,0,20201114,122959;99/8/24 13:31:11,F,1247591.37,<div class='pn'>26516.85</div> 2.17%,47421383985982830,5039085007,61918112976496,730494,P,2229923171,42233712134879,761621,P,2247810,86754663785,3726,;1980@12346584@23620@23660@434@1,11@7181@23610@23700@4000@2,28@61104@23600@23790@2000@1,;95579,611671,381092;31872444,1000000,0,20603084,12269360,2242,1,0,3575,8;;;0;
此外,您可以获得包含历史数据的整个 .csv
文件。
方法如下:
import requests
headers = {
"referer": "http://www.tsetmc.com/Loader.aspx?ParTree=151311&i=35366681030756042",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
export_url = "http://tsetmc.com/tsev2/data/Export-txt.aspx?t=i&a=1&b=0&i=35366681030756042"
export = requests.get(export_url, headers=headers).text
with open("oil_data.csv", "w") as f:
f.write(export)
这就是你得到的结果: