【发布时间】:2022-01-10 10:37:52
【问题描述】:
我正在从事某些与股票相关的项目,我的任务是在过去 5 年中每天收集所有数据。即从 2016 年至今。我特别想到了使用 selenium,因为我可以使用爬虫和机器人来根据日期抓取数据。所以我使用了 selenium 的按钮单击,现在我希望 selenium 浏览器显示的相同数据由 scrappy 提供。 这是我现在正在处理的website。 我在 scrappy spider 中编写了以下代码。
class FloorSheetSpider(scrapy.Spider):
name = "nepse"
def start_requests(self):
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
floorsheet_dates = ['01/03/2016','01/04/2016', up to till date '01/10/2022']
for date in floorsheet_dates:
driver.get(
"https://merolagani.com/Floorsheet.aspx")
driver.find_element(By.XPATH, "//input[@name='ctl00$ContentPlaceHolder1$txtFloorsheetDateFilter']"
).send_keys(date)
driver.find_element(By.XPATH, "(//a[@title='Search'])[3]").click()
total_length = driver.find_element(By.XPATH,
"//span[@id='ctl00_ContentPlaceHolder1_PagerControl2_litRecords']").text
z = int((total_length.split()[-1]).replace(']', ''))
for data in range(z, z + 1):
driver.find_element(By.XPATH, "(//a[@title='Page {}'])[2]".format(data)).click()
self.url = driver.page_source
yield Request(url=self.url, callback=self.parse)
def parse(self, response, **kwargs):
for value in response.xpath('//tbody/tr'):
print(value.css('td::text').extract()[1])
print("ok"*200)
更新:回答后的错误是
2022-01-14 14:11:36 [twisted] CRITICAL:
Traceback (most recent call last):
File "/home/navaraj/PycharmProjects/first_scrapy/env/lib/python3.8/site-packages/twisted/internet/defer.py", line 1661, in _inlineCallbacks
result = current_context.run(gen.send, result)
File "/home/navaraj/PycharmProjects/first_scrapy/env/lib/python3.8/site-packages/scrapy/crawler.py", line 88, in crawl
start_requests = iter(self.spider.start_requests())
TypeError: 'NoneType' object is not iterable
我想将当前的 web html 内容发送到 scrapy feeder,但在过去 2 天里我遇到了异常错误,非常感谢任何帮助或建议。
【问题讨论】:
-
你的意思是像this?
-
什么是“异常错误”?
-
@DMalan 我无法提供 selenium 提供的当前浏览器的网页内容。scrapy 默认捕获初始页面。
标签: python selenium selenium-webdriver scrapy