Я получаю данные со страницы, которая использует Javascript для ссылки на новые страницы.Я использую Scrapy + splash для получения этих данных, однако по какой-то причине ссылки не отслеживаются.
Вот код моего паука:
import scrapy
from scrapy_splash import SplashRequest
script = """
function main(splash, args)
local javascript = args.javascript
assert(splash:runjs(javascript))
splash:wait(0.5)
return {
html = splash:html()
}
end
"""
page_url = "https://www.londonstockexchange.com/exchange/prices-and-markets/stocks/exchange-insight/trade-data.html?page=0&pageOffBook=0&fourWayKey=GB00B6774699GBGBXAMSM&formName=frmRow&upToRow=-1"
class MySpider(scrapy.Spider):
name = "foo_crawler"
download_delay = 5.0
custom_settings = {
'DOWNLOADER_MIDDLEWARES' : {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
},
#'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter'
}
def start_requests(self):
yield SplashRequest(url=page_url,
callback=self.parse
)
# Parses first page of ticker, and processes all maturities
def parse(self, response):
try:
self.extract_data_from_page(response)
href = response.xpath('//div[@class="paging"]/p/a[contains(text(),"Next")]/@href')
print("href: {0}".format(href))
if href:
javascript = href.extract_first().split(':')[1].strip()
yield SplashRequest(response.url, self.parse,
cookies={'store_language':'en'},
endpoint='execute',
args = {'lua_source': script, 'javascript': javascript })
except Exception as err:
print("The following error occured: {0}".format(err))
def extract_data_from_page(self, response):
url = response.url
page_num = url.split('page=')[1].split('&')[0]
print("extract_data_from_page() called on page: {0}.".format(url))
filename = "page_{0}.html".format(page_num)
with open(filename, 'w') as f:
f.write(response.text)
def handle_error(self, failure):
print("Error: {0}".format(failure))
Только первыйстраница выбрана, и я не могу получить последующие страницы, «щелкнув» по ссылкам внизу страницы.
Как это исправить, чтобы я мог щелкать по страницам, указанным внизустраницы?